如何在Visual Studio中以debugging模式运行NUnit?

我最近一直在构build一个C#的testing框架,我一直在努力。 我有NUnit设置和我的工作区内的一个新的项目来testing组件。 如果我从Nunit(v2.4)加载我的unit testing,所有的工作都很好,但是我已经到了在debugging模式下运行并设置一些断点非常有用的地步。

我已经尝试了几个指南的build议,这些build议都build议更改testing项目的“debugging”属性:

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 

我在那里使用控制台版本,但也尝试调用GUI。 当我尝试并开始debugging时,都给我同样的错误:

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

这是因为我通常将\ DSP.nunit加载到Nunit GUI中,这就是testing的地方吗?

我开始认为这个问题可能是VS想运行它自己的testing框架,这就是为什么它没有findNUnittesting?

编辑 :对于那些询问testing装置,我的.cs文件在TestDSP项目中的一个看起来大致是这样的:

 namespace Some.TestNamespace { // Testing framework includes using NUnit.Framework; [TestFixture] public class FirFilterTest { [Test] public void Test01_ConstructorTest() { ...some tests... } } } 

…我很新的C#和NUnittesting框架,所以这是完全可能的,我已经错过了一些关键信息;-)

最终解决scheme :最大的问题是我使用的项目。 如果您selectOther Languages -> Visual C# -> Test -> Test Project …当您select项目types时,Visual Studio将尝试使用它自己的testing框架,据我所知。 你应该select一个正常的 C#类库项目,然后在我select的答案中的说明将工作。

我使用相同的技术,因为你正在尝试乔恩,没有/组装标志,即

 Start External Program: C:\Program Files\NUnit 2.4.8\bin\nunit.exe Command line arguments: "<path>\bin\Debug\Quotes.Domain.Tests.dll" 

TestDSP.dll是否包含您所有的TestFixtures?

由于我的testing项目不是解决scheme中的启动项目,因此我通过右键单击testing项目并select“debugging” – >“启动新实例”来运行我的testing

当我需要debuggingNUnittesting时,我只需使用“Debug | Attach to Process”附加到NUnit GUI应用程序nunit-agent.exe并从GUI运行testing。 在我的testing(或他们正在testing的代码)的任何断点都被击中。 我误解了你的问题,还是会为你工作?

只需删除看起来像的行

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

从你的项目文件。 这条线基本上告诉VS.Net这是一个testing项目,因此“无法启动testing项目”。 仅供参考在这里第一Guid说“这是一个testing”,第二个说“这是C#”。 有关这些Guids的信息: http ://www.mztools.com/Articles/2008/MZ2008017.aspx

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

使用NUnit 2.6附加到nunit.exe或nunit-console.exe而不是代理。 @Justin提到的configuration略有不同。 下面是nun​​it.exe.config的一个例子(与nunit-console.exe.config相同)。

 <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 4testing项目,为了获得中断点,你必须注释掉或删除v2.0行,如评论所示。 一旦我这样做,我能够debugging.NET 4.0testing项目。

如果您使用的是NUnit 2.4或更高版本,则可以将以下代码放在SetUpFixture类中。 (您可以使用旧版本来完成此操作,但是您需要对SetUpFixture ,或将其复制到testing本身。)

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

Debugger.Launch()所做的是在单击“在NUnit中运行”时显示以下对话框。

JIT调试器对话框

然后select正在运行的Visual Studio运行实例,打开项目(截图中的第二个实例),然后debugging器将被连接,任何断点或exception都将显示在Visual Studio中。

安装TestDriven.NET ,它是Visual Studio的插件

从那里你可以右键单击你的unit testing程序集,然后单击运行testing来运行整个套件,右键单击一个TestFixture类只运行该类中的testing,或者右键单击一个Test方法来运行该方法。

如果您需要在debugging模式下断点进入testing,您也可以selectTest With Debugger。

试试NUnitit – 一个开源的Visual Studio插件,用于debuggingNUnittesting用例

主页 – http://nunitit.codeplex.com/

从项目文件中删除ProjectTypeGuids。

如果你能够使控制台/ GUI能够工作,但是你的断点没有被击中,那可能是因为你的应用程序正在运行与NUnit不同的.NET运行时。 检查你的nunit-console.exe.config / nunit.exe.config是否指定了运行库(这些configuration和nunit的exe文件位于同一个目录下)使用启动节点指定运行时:

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

如果项目path在path<path>\bin\Debug\New Project\Quotes.Domain.Tests.dll包含空格(例如“New Project”),请使用双引号将Start Option – > Command Line Arguments项目path括起来。

我花了很多时间来解决这个问题。

在Nunit 3.0.1(我正在使用VS2013)中,从主菜单>testing> Windows>testing资源pipe理器打开。 然后在“testing资源pipe理器”中,右键点击testing用例,你可能会看到: 在这里输入图像说明

希望这可以帮助。

关于Patrick McDonald先生所说的

由于我的testing项目不是解决scheme中的启动项目,因此我通过右键单击testing项目并select“debugging” – >“启动新实例”来运行我的testing

我试图申请我的testing类库,但得到了一些错误的path,所以我试图删除“命令行参数”,幸运的是,它运作良好,如预期。

这听起来像你正在尝试使用错误的库。 NUnit只能启动,如果您使用的DLL包含TestFixtures。

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

我得到了与MSTest相同的错误。 我发现在testing输出窗口中,有些testing有重复的ID,无法加载。 我删除了所有重复的testing,现在我能够在启动项目时运行testing。

现在还有一个扩展“Visual NUnit”,它允许你在Visual Studio中运行testing,就像testing框架中的构build一样。 在扩展pipe理器中检查一下它。

打开Visual Studio —>你的工程—>select“属性”—>select“debugging” – >select“启动外部程序”并设置NUnit的path(例如:启动外部程序= C :\ Program Files \ NUnit 2.6.2 \ bin \ nunit.exe)—->保存

设置完成后,点击Debug

对我来说,解决scheme是适应nunitconfiguration文件。 要使用nunit 4.5-.Net框架和x64构build选项,我必须添加一行到启动标记(受支持的运行时版本)。

 <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来启动。 之前,我需要再次手动将项目附加到过程。

我的debugging属性是C:\ Program Files文件(x86)\ NUnit 2.6.4 \ bin \ nunit.exe,其参数是要testing的.dll的位置。

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

现在有图片:

  1. 运行NUnit GUI( 从这里下载2.6.2 ),然后进入File -> Open Project

在这里输入图像说明

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

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

  3. 从列表中向下滚动并selectnunit-agent.exe然后单击Attach

在这里输入图像说明

  1. 此时,testing中的断点应该变成红色(来自空洞)。

  2. 点击RunNunit Gui你应该得到你的断点…

希望这可以为你节省一些时间。

看看这是否有帮助.. 如何在Visual Studio中添加NUnit

(RighteousRant)虽然个人我不喜欢这种方法..如果你需要一个debugging器,而你正在testing驱动你的代码,这是一个“气味”,你没有足够的信心/知道你的代码如何工作,需要debugging器来告诉你。 如果正确的话,TDD应该让你免于需要一个debugging器。 只有在罕见的情况下或者在涉及其他人的代码时,才使用“附加debugging器到NUNit”。