如何在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略有不同。 下面是nunit.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中运行”时显示以下对话框。
然后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用例
从项目文件中删除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
现在有图片:
- 运行NUnit GUI( 从这里下载2.6.2 ),然后进入
File -> Open Project
-
从bin文件夹(
C:\......\[SolutionFolder][ProjectFolder]\bin\Debug\xxxxTests.dll
)中selecttesting.dll
。 -
转到Visual Studio
Debug -> Attach to process
(附加到进程窗口将打开) -
从列表中向下滚动并select
nunit-agent.exe
然后单击Attach
-
此时,testing中的断点应该变成红色(来自空洞)。
-
点击
Run
在Nunit Gui
你应该得到你的断点…
希望这可以为你节省一些时间。
看看这是否有帮助.. 如何在Visual Studio中添加NUnit
(RighteousRant)虽然个人我不喜欢这种方法..如果你需要一个debugging器,而你正在testing驱动你的代码,这是一个“气味”,你没有足够的信心/知道你的代码如何工作,需要debugging器来告诉你。 如果正确的话,TDD应该让你免于需要一个debugging器。 只有在罕见的情况下或者在涉及其他人的代码时,才使用“附加debugging器到NUNit”。