【发布时间】:2016-09-07 05:44:53
【问题描述】:
我的组织强调 80% 的生产线和分支机构覆盖率。我对线路覆盖要求完全没有问题,但是分支覆盖给了我一个问题。
让我们举个例子:
if(decisionA && decisionB)
{
// path A - do some complex ninja code stuff
}
else
{
// path B - tell user i can't do anything
}
现在,我写了 2 个案例,第一个覆盖路径 A,第二个覆盖路径 B。这应该给我 100% 的线路覆盖率。但是,这给了我 50% 的分支覆盖率,因为我只覆盖了 (True && True) + (False && False) 而忽略了 (True && False) + (False && True)。
在我看来,decisionA 和decisionB 的值微不足道,几乎不值得测试。但是,我的组织中的一揽子要求现在意味着我必须编写 4 个测试用例而不是 2 个。带上多个 if 和嵌套 if 会变得复杂。
在我看来,是否选择覆盖分支案例似乎应该由开发人员决定,只要他认为重要的逻辑(在 A 部分中的忍者代码的情况下)已被覆盖。
您对此有何看法?您认为可接受的分支机构覆盖率是多少?我对强制执行高分支覆盖率的焦虑是否合理,或者我没有足够强调代码质量?我知道这是一个有点主观的问题,但在这方面肯定已经建立了良好的模式。
【问题讨论】:
标签: unit-testing code-coverage code-metrics