我有一个.NET 4.0 C#解决方案和一个在NUnit下运行单元测试的测试项目.NUnit二进制文件是v3.5.
我可以很好地运行测试,但不能在visual studio中设置断点和单步.我猜这是由.NET版本中的不匹配引起的.有没有办法使用nunit for v3.5单步执行v4.0测试程序集?
Wee*_*ble 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>
Run Code Online (Sandbox Code Playgroud)
一旦你改变它,第一个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
Run Code Online (Sandbox Code Playgroud)
如果它对某人有帮助,我知道这是4岁但我在这里按照答案,他们是有用的.即使我的答案是针对另一个完整版本的NUnit,但对于像我这样的人来说,我只是发现了这个,我通过Manage NuGet Packages安装了NUnit和NUnit控制台......(屏幕截图中的第一和第三个选项)
在VS2015社区版中配置我的测试项目属性调试选项卡(参见下面的屏幕截图)以运行nunit3-console.exe,该文件位于安装"NUnit Console"时自动创建的\ packages文件夹中我添加了我的测试库dll和命令行开关--wait(它提示开发人员"按任意键关闭"以便让你看到结果),更重要的是 - 在自动附加测试库.NET代码的进程中你的破发点被击中了.
请注意,要运行NUnit3控制台应用程序,请将测试项目设置为启动项目.