4

我刚开始使用代码覆盖工具(主要在 C# 中)。到目前为止,我已经测试了 NCrunch 和 DotCover。

他们似乎都在分支和函数覆盖方面做得很好,但我不能确定他们是否在做条件覆盖。例如,在我正在测试的某些代码中,只要至少有一条路径通过(或者我错了吗?),以下显示的内容就被涵盖了。但是,在我看来,只有在通过代码的两个逻辑路径都被覆盖的情况下,它才应该被覆盖。

if (item != "")
{
    glc.AddGrayListItem(GrayListTypeEnum.BlackList, item);
}

我想知道的是,DotCover 或 NCrunch(或任何其他 C# 工具)是否会告诉我这不包括在内,除非两种情况 (item != null) 和 (item == null) 都经过测试。

我查看了各种网站,似乎无法找到关于这些工具中的任何一个是否以这种方式工作的明确答案,或者是否有另一种工具以这种方式工作。你们中的任何人都对各种代码覆盖工具提供或不提供哪些类型的覆盖有明确的信息吗?

4

3 回答 3

6

当前版本的 OpenCover 将在分支覆盖率指标中涵盖这一点:

在此处输入图像描述

于 2018-02-10T03:27:55.000 回答
1

如果其他人对这个问题的答案感兴趣...... NCover 是我发现的唯一可以完成这项工作的工具(2017 年)。我检查了 Visual Studio Enterprise Code Coverage、NCrunch、Resharper dotCover、OpenCover 和 NDepend。他们都不支持您要求的 Condition Coverage 案例。如果单元测试在您的示例中没有涵盖真假两种情况,则 NCover 显示 66.67% 的条件覆盖率。

于 2017-05-24T22:39:57.763 回答
0

就个人而言,我知道没有覆盖分析工具可以告诉您是否会执行语句的假设(不存在)else部分。if

于 2014-04-10T19:28:08.477 回答