Имам клас Groovy с един статичен метод:
class ResponseUtil {
static String FormatBigDecimalForUI (BigDecimal value){
(value == null || value <= 0) ? '' : roundHalfEven(value)
}
}
Има тестов случай или няколко:
@Test
void shouldFormatValidValue () {
assert '1.8' == ResponseUtil.FormatBigDecimalForUI(new BigDecimal(1.7992311))
assert '0.9' == ResponseUtil.FormatBigDecimalForUI(new BigDecimal(0.872342))
}
@Test
void shouldFormatMissingValue () {
assert '' == ResponseUtil.FormatBigDecimalForUI(null)
}
@Test
void shouldFormatInvalidValue () {
assert '' == ResponseUtil.FormatBigDecimalForUI(new BigDecimal(0))
assert '' == ResponseUtil.FormatBigDecimalForUI(new BigDecimal(0.0))
assert '' == ResponseUtil.FormatBigDecimalForUI(new BigDecimal(-1.0))
}
Това води до 6/12
клона, покрити според Sonar/JaCoCo:
Така че промених кода, за да бъде по-...подробен. Не мисля, че оригиналният код е "твърде умен" или нещо подобно, но го направих по-ясен и по-ясен. И така, ето го:
static String FormatBigDecimalForUI (BigDecimal value) {
if (value == null) {
''
} else if (value <= 0) {
''
} else {
roundHalfEven(value)
}
}
И сега, без да са променили нищо друго, Sonar/JaCoCo съобщават, че е напълно покрито:
Защо е така?
areturn
повече от версията с един ред)... Вероятно има хора, които са се сблъскали с този проблем (и са намерили заобиколни решения) в пощенския списък на Groovy User... Бих опитал да пусна имейл и да видя дали някой има виждал ли си това преди? - person tim_yates   schedule 19.06.2012