调试在NUnit下运行的测试

时间:2012-02-15 17:15:44

标签: c# nunit

我有一个带有测试项目的.NET 4.0 C#解决方案,它在NUnit下运行单元测试。 NUnit二进制文件是v3.5。

我可以很好地运行测试,但不能在visual studio中设置断点和单步。我猜这是由.NET版本中的不匹配引起的。有没有办法使用nunit for v3.5单步执行v4.0测试程序集?

5 个答案:

答案 0 :(得分:27)

问题在于除非你另外告诉它,否则NUnit会在确定必要时生成一个子进程来运行测试。如果您在Process Explorer中查看它,您可以看到“nunit-console.exe”*生成“nunit-agent.exe”*。 Visual Studio调试器不会自动附加到子进程。

在这种情况下,我认为版本不匹配是它选择启动子流程的原因。解决此问题的最简单方法是编辑“nunit-console.exe.config”*以更改<supportedRuntime>值的集合。应该已经有一个注释标记您应注释掉的行,以强制它作为.NET 4.0运行:

<startup useLegacyV2RuntimeActivationPolicy="true">
  <!-- Comment out the next line to force use of .NET 4.0 -->
  <supportedRuntime version="v2.0.50727" />
  <supportedRuntime version="v4.0.30319" />
</startup>

更改后,第一个NUnit进程已经是.NET 4.0,它不需要生成子进程。如果您想确定,请指定/process=Single,NUnit将在单个进程中运行,如果不能,则立即失败。

* - 如果您需要使用x86版本,请替换:

nunit-console.exe        -> nunit-console-x86.exe
nunit-agent.exe          -> nunit-agent-x86.exe
nunit-console.exe.config -> nunit-console-x86.exe.config

答案 1 :(得分:7)

如果它对某人有帮助,我知道这是4岁但我在这里按照答案,他们是有用的。即使我的答案是针对另一个完整版本的NUnit,但对于像我这样的人来说,我只是发现了这个,我通过Manage NuGet Packages安装了NUnit和NUnit控制台......(屏幕截图中的第一和第三个选项) enter image description here 并在VS2015社区版中配置我的测试项目属性调试选项卡(请参阅下面的屏幕截图)以运行nunit3-console.exe,该文件位于安装“NUnit Console”时自动创建的\ packages文件夹中我添加了我的测试库dll和命令行开关--wait(它提示开发人员“按任意键关闭”以便让你看到结果),更重要的是 - 在自动附加测试库.NET代码的进程中你的破发点被击中了。

enter image description here

注意,要运行NUnit3控制台应用程序,请将测试项目设置为启动项目。

答案 2 :(得分:3)

另一个选择是使用http://testdriven.net/通过Visual Studio运行测试,你可以在测试和测试中放置一个断点。右键单击 - &gt;运行测试 - &gt;用调试器。

答案 3 :(得分:2)

Resharper允许您在调试时逐步执行单元测试。但我不认为你可以用Visual Studio做同样的事情。尝试安装Resharper的试用版,然后尝试调试测试。

答案 4 :(得分:2)

我注意到控制台应用程序,但您应该发现可以手动启动NUnit的GUI版本,然后从Visual Studio中的调试器附加到 nunit-agent 进程。 / p>