У меня есть класс 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