如何使用TestDriven.net和NCover生成有用的代码覆盖率XML文件?

13

重现步骤:

  1. 在Windows 7 Ultimate 32位版中使用VS 2010 Professional创建一个C#项目。
  2. 使用VS C# Unit Test向导编写一些单元测试。
  3. 下载并安装最新的RTM或Beta版本的TestDriven.Net。
  4. 右键单击测试项目,选择“使用NCover进行测试”。
  5. 等待。
  6. 发现NCover的窗口是空的。

如何让TestDriven.net生成一个有用的带有NCover的代码覆盖XML文件?

到目前为止,我尝试过重新启动、卸载RTM版本并安装Beta版本以及在Debug和Release模式下运行。

输出窗口文本更新:

------ Test started: Assembly: TestProject1.dll ------

NCover v1.5.8 - Code Coverage Analysis for .NET - http://ncover.com

NCover.Console v1.5.8 - Code Coverage Analysis for .NET - http://ncover.org
Copyright (c) 2004-2006 Peter Waldschmidt


Command: C:\Program Files\TestDriven.NET 3\ProcessInvocation86.exe
Command Args: "/assemblyName:TestDriven.TestRunner.Server, Version=3.2.2770.0, Culture=neutral, PublicKeyToken=50ecb853f8c6b8d2" "/xmlName:M:TestDriven.TestRunner.Coverage.NCoverCoverageTestRunner.OutOfProc.Run(System.String,System.String,System.String,System.String,System.String)" "/parameter:tcp://127.0.0.1:64445/7dbdb535-3602-4a8e-8bbc-f8be7eb83987" "/parameter:tcp://127.0.0.1:64445/fbff4f73-2438-43e4-b1f9-2bdaeb9c0907" "/parameter:C:\Users\Zian\Documents\Visual Studio 2010\Projects\ClassLibrary1\TestProject1\bin\Debug\TestProject1.dll" "/parameter" "/parameter"
Working Directory: 
Assemblies: ClassLibrary1;ClassLibrary1_Accessor;TestProject1
Coverage Xml: C:\Users\Zian\AppData\Local\Temp\Mutant Design\TestDriven.NET 2.0\Coverage\ClassLibrary1\TestProject1.xml
Coverage Log: Coverage.Log

Waiting for profiled application to connect...Connected
Configuring Profiler...
******************* Program Output *******************
Unable to establish communications with the profiler. (0x2)

NCover couldn't create a coverage report.

1
TDD.net的其余部分工作吗?也就是说,您是否可以通过TDD.net运行测试并获得结果? - Brandon
你是否使用 TDD.net 附带的旧版本 NCover,还是购买了新的 NCover 呢? - Brandon
@Brandon:是的,TDD.net的其余部分都可以正常工作。我正在使用随TDD.net一起提供的NCover版本。 - Zian Choy
你的实际目标是要一个XML文件,还是最终只是想要一种可视化覆盖率的方法? - Adam Ralph
我要在这里有点作弊,预先给出比请求更多的答案。如果我记得正确,XML文件非常空;它只有根元素(但是看到,我不能写它是“空的”,因为我知道它不是。: ))。我很确定NCover可以处理XML文件,只要它有内容,所以我现在的目标是获得一个工作的XML文件。然而,如果一颗小行星摧毁了TDD.net,那么我只想要一种可视化我的覆盖率的方法。 - Zian Choy
2个回答

2
(假设您使用的是带有TDD.Net的NCover 1.5.8)
我已经按照您所描述的做法实现了,并且它可以正常工作... 以下是一些需要考虑的事情:
1. 您确定实际的xml文件是空的吗?尝试在这里查找: C:\Users\USERNAME\AppData\Local\Temp\Mutant Design\TestDriven.NET 2.0\Coverage\YOURPROJECT,或者使用类似Everything(一个很棒的免费搜索工具)来查找YourTestProject.xml。也许NCover GUI存在问题。
2. 在1.5.8之前,MSTest和NCover集成存在一些问题。尝试使用NUnit进行重现并查看发生了什么 (实际上,在我看来,MSTest与NUnit相比没有任何优势)。
3. 您是否还运行其他profiler以外的应用程序?如果是,请尝试禁用它们。
编辑: 尝试按照这篇文章中的步骤操作。有一个名为“使用TestDriven.NET进行NCover”的部分。 看起来NCover的分析器没有正确注册,所以你需要手动完全删除它(TDD.Net可能不会为您完成此操作),然后重新安装它。

我使用的是64位Windows 7旗舰版,但其他方面都相同,对我也可以正常工作。 - shamp00
今天我刚试图重现这个问题,但是现在我甚至没有得到一个XML文件。详细信息请参见主要问题帖子。 - Zian Choy
@Zian Choy 你在编辑中添加的信息有点相关...可能有解决方案-请看我的编辑后答案。祝好运 :-) - seldary
奇怪的是,只需要卸载测试版并重新安装 RTM 版本即可解决问题。我怀疑 TestDriven.Net 卸载 RTM 版本时没有删除 NCover 注册信息,这可能会导致问题。显然,测试版的卸载程序解决了这个问题。 - Zian Choy
很遗憾,由于“卸载和重新安装”不是您帖子的关键点,我无法将其标记为答案,所以我会给您一个赞。 - Zian Choy

0
  1. 卸载TestDriven.net的Beta版本
  2. 安装TestDriven.net的RTM版本

这两个步骤的作用是因为NCover的分析器没有正确注册,正如KiwiDude所描述的那样


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接