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运行测试.我的测试中的任何断点(或他们正在测试的代码)都会被击中.我误解了你的问题,还是会对你有用?
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来运行我的测试
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中的"运行"时,导致以下对话框显示的原因是什么.

然后,在项目打开的情况下选择正在运行的visual studio实例(我的屏幕截图中的第二个),然后将附加调试器,并且任何断点或异常都将显示在Visual Studio中.
Qui*_*inn 12
在Nunit 3.0.1(我正在使用VS2013)中,从主菜单>测试> Windows>测试资源管理器打开.然后在"测试资源管理器"中,右键单击测试用例,您可能会看到:

希望这可以帮助.
安装TestDriven.NET,它是Visual Studio的一个插件
从那里,您可以右键单击您的单元测试程序集,然后单击Run Tests运行整个套件,右键单击TestFixture类以仅运行该类中的测试,或者右键单击Test方法以仅运行该方法.
如果需要在调试模式下断点测试,还可以选择Test With Debugger.
| 归档时间: |
|
| 查看次数: |
89778 次 |
| 最近记录: |