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

Jon*_*age 118 c# testing nunit unit-testing visual-studio-2008

我最近一直在构建一个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
Run Code Online (Sandbox Code Playgroud)

我在那里使用控制台版本,但也试过调用GUI.当我尝试开始调试时,两者都给出了同样的错误:

Cannot start test project 'TestDSP' because the project does not contain any tests.
Run Code Online (Sandbox Code Playgroud)

这是因为我通常将\ DSP.nunit加载到Nunit GUI中并且这是测试所在的位置吗?

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

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

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

    [TestFixture]
    public class FirFilterTest
    {
        [Test]
        public void Test01_ConstructorTest()
        {
            ...some tests...
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

...我对C#和NUnit测试框架都很陌生,所以我完全有可能错过了一些关键的信息;-)

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

Mat*_*ton 100

当我需要调试我的NUnit测试时,我只需nunit-agent.exe使用"Debug | Attach to Process" 连接到NUnit GUI应用程序,然后从GUI运行测试.我的测试中的任何断点(或他们正在测试的代码)都会被击中.我误解了你的问题,还是会对你有用?

  • 请注意,您必须在NUnit的"设置"对话框中选择"启用Visual Studio支持" - >"IDE支持" (15认同)
  • 对于.NET 4.0及更高版本,我相信您还必须将其添加到nunit.exe.config:`<startup> <supportedRuntime version ="4.0"/> </ startup>`. (8认同)
  • 对于您(和其他人)的信息:VS的Express版本中没有Debug | Attach. (7认同)
  • 仅供参考:您需要将调试附加到名为"nunit-agent.exe"且不是"nunit.exe"的进程.否则你的断点会被忽略,你想知道为什么...... (7认同)

Pat*_*ald 45

我使用与你尝试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"
Run Code Online (Sandbox Code Playgroud)

TestDSP.dll是否包含所有TestFixtures?

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

  • 万一人们不查看罗伯特(非常有用)的博客文章(http://erraticdev.blogspot.com/2012/01/running-or-debugging-nunit-tests-from.html):对于.NET 4.0和稍后,我相信您还必须将此添加到nunit.exe.config:<startup> <supportedRuntime version ="4.0"/> </ startup>. (6认同)
  • 终于搞定了.我是正确的,因为项目选项正在停止它 - 使用标准类模板重新创建测试项目修复了问题. (3认同)
  • 后续:在NUnit的更高版本(截至今天的最新版本是v2.6.1)中,您需要在nunit.exe.config中注释掉`<supportedRuntime version ="v2.0.50727"/>`. (3认同)

use*_*648 21

只需删除看起来像的线条

<ProjectTypeGuids>
    {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
</ProjectTypeGuids>
Run Code Online (Sandbox Code Playgroud)

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


dbl*_*ood 18

除了@Justin提供的答案之外,还有NUnit 2.6的更多细节.

使用NUnit 2.6附加到nunit.exe或nunit-console.exe而不是代理.@Justin注意到的配置略有不同.以下是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>
Run Code Online (Sandbox Code Playgroud)

对于.NET 4测试项目,要获得断点,您必须注释掉或删除v2.0行,如评论所示.一旦我这样做,我就能够调试.NET 4.0测试项目.


Sco*_*ain 17

如果您使用的是NUnit 2.4或更高版本,则可以在SetUpFixture课程中输入以下代码.(您可以使用旧版本执行此操作,但您需要执行与之相关的任何等效操作SetUpFixture,或将其复制到测试本身.)

[SetUpFixture]
public class SetupFixtureClass
{
    [SetUp]
    public void StartTesting()
    {
        System.Diagnostics.Debugger.Launch();
    }
}
Run Code Online (Sandbox Code Playgroud)

Debugger.Launch()当您单击NUnit中的"运行"时,导致以下对话框显示的原因是什么.

JIT调试器对话框

然后,在项目打开的情况下选择正在运行的visual studio实例(我的屏幕截图中的第二个),然后将附加调试器,并且任何断点或异常都将显示在Visual Studio中.


Qui*_*inn 12

在Nunit 3.0.1(我正在使用VS2013)中,从主菜单>测试> Windows>测试资源管理器打开.然后在"测试资源管理器"中,右键单击测试用例,您可能会看到: 在此输入图像描述

希望这可以帮助.

  • 谢谢你的回答.比其他所有人简单得多. (2认同)

Jon*_*jap 6

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

从那里,您可以右键单击您的单元测试程序集,然后单击Run Tests运行整个套件,右键单击TestFixture类以仅运行该类中的测试,或者右键单击Test方法以仅运行该方法.

如果需要在调试模式下断点测试,还可以选择Test With Debugger.

  • 对于这样的工具来说,170美元是非常陡峭的.价格欺诈,任何人? (2认同)

abh*_*ash 6

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

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


小智 5

从项目文件中删除ProjectTypeGuids.