1

我想知道涵盖特定方法的测试。但是,NCover 不提供此信息。我不想使用 VSTS,因为我的代码不在 TFS 中。在.NET中有什么方法/工具可以做到这一点吗?

4

2 回答 2

1

从根本上说,您必须为每个测试运行一次测试覆盖工具,为该测试生成一个覆盖向量。如果您有数百个测试,您可以分别收集每个测试的覆盖率。

然后,如果覆盖向量 N 覆盖了一个方法,则测试 N 导致了该覆盖。

我不知道 NCover 是否/如何 NCover 可以交叉引用回对应于方法源代码的行范围。

对于我们的C# 测试覆盖工具,仪器工具会为每个覆盖测试点生成行号范围,并且在每个方法的开头插入一个测试点。因此,如果您知道文件中方法的行号,则可以从技术上定位入口覆盖点,从而确定构成该方法的行范围,从而确定该方法中的所有测试覆盖点。使用这样的列表,可以直接计算测试覆盖向量是否达到了这些点。因此,我们的工具具有提供此数据所需的信息,尽管它没有得到很好的记录。您可以要求我们提供更多文件或帮助执行此操作。

于 2011-12-07T14:24:32.103 回答
0

dotCover我相信在 UI 中提供了这种支持,但我不确定这些信息是否可以从构建机器获得。

OpenCover的其中一个分支正在进行中——这是该项目的最初目标之一,并推动了 OpenCover 的设计通过一次测试就达到了这一目标——敬请期待……

最后,正如 Ira 提到的,您可以单独运行测试并从使用 NUnit/MSTest(插入选择的测试工具)执行的单个测试中获得覆盖(使用大多数覆盖工具,例如NCoverPartCoverOpenCover等),但是您也将还可以了解任何设置/拆卸操作中发生的任何事情。

于 2011-12-07T21:44:39.567 回答