如何从 VisualStudio 以调试模式运行 NUnit?

我最近一直在为我正在研究的 C # 构建一个测试框架。我已经在我的工作区中设置了 NUnit 和一个新项目来测试组件。如果我从 Nunit (v2.4)加载我的单元测试,那么一切都很好,但是我已经到了在调试模式下运行并设置一些断点会非常有用的地步。

我已经尝试了几个指南中的建议,它们都建议更改测试项目的“ Debug”属性:

Start external program: C:\Program Files\NUnit 2.4.8\bin\nunit-console.exe
Command line arguments: /assembly: <full-path-to-solution>\TestDSP\bin\Debug\TestDSP.dll

I'm using the console version there, but have tried the calling the GUI as well. Both give me the same error when I try and start debugging:

Cannot start test project 'TestDSP' because the project does not contain any tests.

Is this because I normally load \DSP.nunit into the Nunit GUI and that's where the tests are held?

我开始认为问题可能是 VS 想要运行它自己的测试框架,这就是为什么它找不到 NUnit 测试的原因?

编辑 : 对于那些询问测试 fixture 的人来说,TestDSP 项目中的一个.cs 文件大致如下:

namespace Some.TestNamespace
{
// Testing framework includes
using NUnit.Framework;


[TestFixture]
public class FirFilterTest
{
[Test]
public void Test01_ConstructorTest()
{
...some tests...
}
}
}

... ... 我对 C # 和 NUnit 测试框架相当新,所以完全有可能我遗漏了一些关键的信息; -)

最终解决方案 : 最大的问题是我使用的项目。如果您选择 Other Languages -> Visual C# -> Test -> Test Project... 当您选择项目类型时,VisualStudio 将尝试使用它自己的测试框架,据我所知。您应该选择一个 正常 C # 类库项目,然后我选择的答案中的说明将工作。

99280 次浏览

安装 TestDriven.NET,它是 VisualStudio 的一个插件

From there you can right click on your unit test assembly and click Run Tests to run the whole suite, right click on a TestFixture class to run just the tests in that class, or right click on a Test method to run just that method.

如果需要在调试模式下断点到测试中,还可以选择“使用调试器测试”。

When I need to debug my NUnit tests, I simply attach to the NUnit GUI application nunit-agent.exe using "Debug|Attach to Process" and run the tests from the GUI. Any breakpoints in my tests (or the code they're testing) are hit. Am I misunderstanding your question, or will that work for you?

我使用了与您尝试 Jon 相同的技术,但没有使用/Assembly 标志,即。

Start External Program: C:\Program Files\NUnit 2.4.8\bin\nunit.exe


Command line arguments: "<path>\bin\Debug\Quotes.Domain.Tests.dll"

Dll 包含所有的 TestFixture 吗?

由于我的测试项目不是解决方案中的启动项目,所以我通过右键单击测试项目并选择 Debug —— > Start New Instance 来运行测试

尝试 NUnitit-一个用于调试 NUnit 测试用例的开源 Visual Studio Addin

首页-http://nunitit.codeplex.com/

看看这个有没有用。 如何在 VisualStudio 中添加 NUnit

虽然我个人不喜欢这种方式。.如果你在测试代码的时候需要一个调试器,这是一种“气味”,因为你没有足够的信心/知道你的代码是如何工作的,需要调试器来告诉你。如果处理得当,TDD 应该可以使您不再需要调试器。只有在极少数情况下或者涉及到其他人的代码时,才使用“将调试器附加到 NUNit”。

It sounds like you are trying to use the wrong library. NUnit can only start if the dll you are using contains TestFixtures.

+ 1在 TestDriven.Net 上。我已经有机会使用它很多次了。 您可以根据 http://testdriven.net/purchase_licenses.aspx的许可证下载个人版本,以便进行评估。

从项目文件中删除 ProjectTypeGuids。

关于 Patrick McDonald先生说的话

由于我的测试项目不是解决方案中的启动项目,所以我通过右键单击测试项目并选择 Debug —— > Start New Instance 来运行测试

I tried to apply for my test class library but got some error regarding the path, so I tried to remove the 'Command Line Arguments', and luckily it worked well and as expected.

我在 MSTest 上也得到了同样的错误。我发现在 测试输出窗口中,一些测试有重复的 ID,无法加载。我删除了所有重复的测试,现在我可以运行测试时,我开始的项目。

只需删除看起来像

<ProjectTypeGuids>
{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
</ProjectTypeGuids>

从你的项目文件。 这一行基本上告诉 VS.Net 它是一个测试项目,因此“无法启动测试项目”。仅供参考,第一个指导说“这是一个测试”,第二个说“这是 C #”。 关于这些指南的信息: http://www.mztools.com/article/2008/MZ2008017.aspx”rel = “ nofollow noReferrer”> http://www.mztools.com/articles/2008/mz2008017.aspx

如果项目路径包含空格,例如路径 <path>\bin\Debug\New Project\Quotes.Domain.Tests.dll中的“ New Project”,那么将开始选项-> 命令行参数项目路径用双引号括起来。

我花了很多时间想明白。

如果您能够使控制台/或 GUI 工作,但是没有命中断点,这可能是因为您的应用程序运行的是不同的。NET 运行时比 NUnit 多。检查您的 nunit-console. exe。Config/nunit.exe.config 指定了运行时。(配置与 nunit exe 的目录在同一个目录中。)使用启动节点指定运行库:

<configuration>
<startup>
<supportedRuntime version="4.0" />
</startup>

除了@Justin 提供的答案之外,这里还有一些关于 NUnit 2.6的更多细节。

使用 NUnit 2.6附加到 NUnit.exe 或 NUnit-console. exe,而不是代理。@ Justin 注意到的配置略有不同。下面是 nunit.exe.config 中的一个示例(与 nunit-console.exe 相同)。配置)。

<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>

为了。NET 4测试项目,为了得到突破点击中,你将不得不注释出或删除的 v2.0行的注释建议。一旦我这样做,我就能够调试。NET 4.0测试项目。

There is also an extension now "Visual NUnit" that will allow you to run the tests from within Visual studio much like the build in test framework handles. Check it out its in the extension manager.

如果您使用的是 NUnit 2.4或更新的版本,那么您可以将以下代码放在 SetUpFixture类中。(可以对旧版本执行此操作,但需要执行与 SetUpFixture等效的操作,或将其复制到测试本身。)

[SetUpFixture]
public class SetupFixtureClass
{
[SetUp]
public void StartTesting()
{
System.Diagnostics.Debugger.Launch();
}
}

What Debugger.Launch() does is cause the following dialog to show up when you click Run inside NUnit.

JIT Debugger Dialog

You then choose your running instance of visual studio with your project open (the 2nd one in my screenshot) then the debugger will be attached and any breakpoints or exceptions will show up in Visual Studio.

打开 Visual Studio ——-> your Project ——-> Select‘ Properties’——-> Select‘ Debug’——-> Select‘ Foreign Program’and set the path of your NUnit there (例如: Start foreign Program = C: Program Files NUnit 2.6.2 bin NUnit.exe)——-> Save

After setting this just click Debug

对我来说,解决方案是调整 nunit 配置文件。要使用带有4.5-.Net 框架和 x64构建选项的 nunit,我必须在启动标记(受支持的运行时版本)中添加一行代码。

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

然后,我可以右键单击 Testproject Debug-> Start new instance 开始。 在此之前,我需要再次手动将项目附加到流程中。

我的调试属性是, C: Program Files (x86) NUnit 2.6.4 bin NUnit.exe with argument of the location of the .dll to be tested.

更多信息: 用于.NET 4.0测试的 nunit

现在播放图片:

  1. 运行 NUnit gui (Download 2.6.2 from here)然后转到 File -> Open Project

enter image description here

  1. 从 bin 文件夹(C:\......\[SolutionFolder][ProjectFolder]\bin\Debug\xxxxTests.dll)中选择测试 .dll

  2. 转到 VisualStudioDebug -> Attach to process(附加到进程窗口将打开)

  3. 从列表向下滚动并选择 nunit-agent.exe,然后单击 Attach

enter image description here

  1. 此时,测试中的断点应该变成成熟的红色(从中空开始)。

  2. 单击 Nunit Gui上的 Run,应该会命中断点..。

希望这能为你节省点时间。

在 Nunit 3.0.1(我使用的是 VS2013)中,从主菜单 > Test > Windows > Test Explorer 打开。然后在“ Test Explorer”中,右键单击测试用例,您可能会看到: enter image description here

Hope this helps.