2

我正在使用 VS2010 + C# + .Net 4.0。我想为单元测试做代码覆盖。调查后我有两个选择,我的问题是,我想知道这两个工具/选择的优缺点。

  1. 使用非 VS 内置工具,例如 ncover;
  2. 使用 VSTS 内置工具,例如,

http://msdn.microsoft.com/en-us/library/dd299398%28VS.90%29.aspx

http://msdn.microsoft.com/en-us/library/ms379625%28VS.80%29.aspx#vstsunittesting_topic7

4

2 回答 2

3

使用了这两种工具后,它们的工作方式几乎相同。您运行测试,然后查看报告。这两种工具都提供代码高亮显示,哪些代码行有覆盖,哪些没有。MsTest 在信息方面没有提供更多的信息,但 NCover 提供了大量的 HTML 报告,并且可以随时间变化趋势代码覆盖率。这些事情可能会有所帮助。

现在来看看差异。MsTest 覆盖工具实际上只适用于 MsTest 单元测试。它无法轻松涵盖使用 IDE 中的 NUnit(或其他测试框架)编写的测试。它可以完成,但需要一些时间,并且需要从命令行调用覆盖工具并手动检测您的程序集。同样,它可以完成,但不是很容易,尤其是对于初学者。NCover 更灵活,可以与大多数测试框架一起运行。此外,我发现使用自动构建服务器运行 NCover 更容易。我从来没有在 CruiseControl 中自动化 MsTest 覆盖,但我猜 MS 让它在 Team Foundation Server 中工作。

于 2010-11-01T02:51:36.307 回答
1

只是一些可能会有所帮助的小笔记:

  1. 不幸的是,NCover 的免费软件版本不适用于 .Net 4.0 运行时
  2. 如果您对与 CruiseControl.Net 的集成感兴趣,可以使用 Gallio 测试运行程序来运行 MSTest 测试。请参阅 Gallio:无法运行测试,因为找不到 MSTest 可执行文件
于 2010-11-01T10:24:44.510 回答