【发布时间】:2015-08-14 14:48:44
【问题描述】:
我想要的,来自 .NET 覆盖工具,但一直找不到...
能够运行单元测试,并跟踪哪些单元测试已经执行了哪些代码行,以及哪些代码行根本没有执行。 能够生成交互式报告,允许用户按程序集、文件、命名空间、类等查看覆盖率的统计摘要;并深入到源代码级别以准确查看哪些行被覆盖和未被覆盖。
能够运行测试并从 Jenkins 生成报告,并将报告包含在 Jenkins 为每个构建显示的信息中。 能够按行将源代码标记为不需要覆盖。 能够让报告清楚地表明每一行源代码都已被覆盖或标记为不需要覆盖。
我一直在寻找免费的覆盖工具,但并不满意。我最近开始阅读 dotCover,它看起来确实提供了我需要的更多内容。但从我在文档中读到的内容来看,它提供了将代码从文件、类或函数的覆盖要求中排除的机制。但如果它提供了按行从覆盖范围中排除代码的功能,我就错过了。
本质上,我正在寻找的是通过失败。 90% 的覆盖率,80% 的覆盖率,或者 95% 的覆盖率,对我来说毫无意义。 80% 的覆盖率可能意味着 20% 的代码不需要覆盖率,99.9% 的覆盖率可能意味着只有一个迫切需要测试的关键功能尚未测试。
我的看法分为三类:
- 已被测试覆盖的代码
- 已标记为不需要测试的代码
- 未被测试覆盖且未被标记为不需要测试的代码
在单元测试运行之后,如果没有第 3 类中的代码,我想要的是通过,或者如果有,则失败。
而且我需要能够将代码标记为不需要逐行测试,而不仅仅是函数测试,因为当我查看覆盖率报告中的函数时,我很容易看到某些控制流通过测试未执行的功能。最常见的是异常或错误处理。有时,创建将生成测试这些控制流所需的错误或异常的测试所需的工作量可能很大,而有时测试揭示问题的可能性很小。
在这种情况下,我希望能够将代码标记为已检查,并且已确定不需要测试。当我以这种方式标记代码时,我希望代码未被测试覆盖的事实不会导致构建失败。
有谁知道有什么 NET 覆盖工具可以做到这一点?
【问题讨论】:
-
官方工具请求在 Stack Overflow 上是题外话。至于您的问题,随着类/方法的变化,排除特定的行并随着时间的推移排除该确切的行并不容易。维护将是地狱般的。它可能更像是您正在寻找的代码审查工具,它也可以突出显示覆盖率信息,而不是覆盖率工具。
-
如果 Stack Exchange 元社区中有更好的地方问这个问题,请告诉我,我会移动它。
-
我不认为有问这个问题的好地方。我认为,如果您将其改写为就如何执行此审查寻求实践或建议,那么它会很合适,但是对于程序员以及 stackoverflow 和代码审查而言,寻求工具建议是禁区...
-
@jessehouwing 为什么维护起来会很糟糕?您可以通过让该工具读取源代码中的 pragma cmets 来做到这一点,就像 coverage.py 所做的那样。
-
@jessehouwing Software Recommendations 怎么样?
标签: .net unit-testing jenkins code-coverage