我有2段代码给我带来麻烦 . 我用Unit-Tests测试它们,使用cobertura分析测试覆盖率,我不明白如何计算条件覆盖率 . 这是第一篇:
if ((x.getInt() == a)
|| (x.getInt() == y.getInt()) { ...
Cobertura报告我需要覆盖4个案例,当假设忽略短路时这似乎很好 .
然后,在另一种方法中,我有另一个(更长)条件:
if ((x == null)
|| ObjectUtils.equals(x.getInt(), a)
|| ObjectUtils.equals(x.getInt(), y.getInt())) {
...
以下是我不理解的部分:Cobertura报告说有5/6个案例 . 我原本预计会有8个案例,我可以解释5个案例(考虑到x == null),但是
在这些情况下,cobertura如何处理条件覆盖,为什么会导致6个案例?
1 回答
覆盖率不是通过测试布尔标志状态的所有可能组合来测量的,而是仅测量那些足以涵盖所有用例的组合 .
考虑以下课程:
提供完整覆盖的测试如下: