単一の静的メソッドを持つ Groovy クラスがあります。
class ResponseUtil {
static String FormatBigDecimalForUI (BigDecimal value){
(value == null || value <= 0) ? '' : roundHalfEven(value)
}
}
テスト ケースが 1 つまたはいくつかあります。
@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 はそれを完全にカバーしていると報告しています:
これはなぜですか?