我刚开始使用代码覆盖工具(主要是在C#中)。到目前为止,我已经测试了NCrunch和DotCover。
他们似乎都在分支和功能覆盖方面做得很好,但我无法确定他们是否正在进行有条件的覆盖。例如,在我正在测试的一些代码中,只要至少有一条路径通过(或者我错了吗?),以下显示为覆盖。但是,在我看来,如果涵盖了代码中的两条逻辑路径,那么它应该被覆盖。
if (item != "")
{
glc.AddGrayListItem(GrayListTypeEnum.BlackList, item);
}
我想知道的是,如果DotCover或NCrunch(或任何其他C#工具)告诉我,除非两种情况(item!= null)和(item == null)都经过测试
我查看了各种网站,似乎无法找到关于这些工具中的任何一种是否以这种方式工作的确定答案,或者是否有其他工具以这种方式工作。您是否有任何关于各种代码覆盖工具所提供或不提供的覆盖范围的确切信息?
答案 0 :(得分:1)
就我个人而言,我知道没有覆盖率分析工具可以告诉您是否会执行else
语句的假设(缺席)if
部分。
答案 1 :(得分:0)
如果其他人对这个问题的答案感兴趣... NCover是迄今为止我发现的唯一工具(2017年)。我检查了Visual Studio企业代码覆盖率,NCrunch,Resharper dotCover,OpenCover和NDepend。他们都不支持您要求的条件覆盖范围案例。如果单元测试不包括您示例中的真假案例,则NCover显示66.67%的条件覆盖率。
答案 2 :(得分:0)