我的平台:使用NUnit 2.2.7的Visual C#2008 Express Edition
我的代码在一个项目中有一个解决方案,我的NUnit单元在同一个解决方案中的另一个项目中进行测试。
我一直在努力调试和单步执行NUnit测试。我在网上找到了一些建议,提出以下建议:
NUnit.ConsoleRunner.Runner.Main(args);
但这甚至没有编译 - 它有编译错误:
错误1类型或命名空间名称 'Runner'不存在于 命名空间'NUnit.ConsoleRunner'(是 你错过了一个程序集引用?)
我添加了我能找到的每个装配参考,但没有效果。
最后,这就是我一起入侵的原因并且它有效,但也许你好的读者可以提出更好的解决方案:
1)在我的测试项目中,我要调试的测试用例的类名是MyTestClass。它有一个名为Init()的[TestFixtureSetUp]方法,实际测试用例在[Test]函数MyTest()
中2)在我的代码项目中,我有一个控制台程序TestProgram.cs,它编译成一个EXE。
在TestProgram.cs中,我按以下方式调用测试用例
// First instantiate the test class
MyTestClass tc = new MyTestClass();
// Call the TestFixtureSetup method
tc.Init();
// Now call the actual test
tc.MyTest();
这可行,我可以调试并逐步完成测试用例。
如果有人使用Visual Studio 2008 Express 获得更好的建议而无需支付额外的插件,我感谢您的建议。
答案 0 :(得分:3)
Jon是一个好方法,但不是更自动的方式;)
以下是我already say on SO:
您可以创建一个空白项目(例如选择控制台应用程序),在项目的属性中,您可以选择DEBUG标签并选择Start External Program
。把Nunit的路径。在启动选项中,命令行参数选择包含所有测试的DLL(我的总是在nunit \ bin ...中)。然后选择Enable unmanaged code debugging
,您就可以在VS内启动项目,甚至可以逐步使用调试器。
这样,你不需要每次都做宏或任何事情,这只是一个普通的F5:)
答案 1 :(得分:2)
由于您使用的是Visual Studio的Express版本,因此无法使用免费的TestDriven.NET加载项。这很不幸,因为这确实是我用来调试单元测试的最佳工具。
可以在 nunit-console-runner.dll 程序集中找到Runner
类,因此请务必添加对此的引用。我不确定你的简单入口点没有做到这一点,但最好是使用它以确保安全和未来的兼容性。
值得一提的另一个(脏)选项是单元测试调用Debugger.Attach()
。我没有尝试使用快速安装,但是在单元测试运行时应该提示您附加调试器。然后,您可以选择现有的VS实例并使用它进行调试。
答案 2 :(得分:2)
查看http://nunit.com/blogs/?p=28
这是一种享受。
答案 3 :(得分:0)
在我的商店,我们正如你那样做。在缺点方面,这意味着设置可能与NUnit完全不同。从好的方面来说,这样做非常简单,并且可以创建一个最小的环境来重现错误。
答案 4 :(得分:0)
我在网上找到了一些参考资料 建议调用以下内容:
NUnit.ConsoleRunner.Runner.Main(args);
但这甚至没有编译 - 它有 编译器错误:
JFYI 您需要在NUnit DLL包中添加一个.NET DLL引用 nunit-console-runner 程序集(我有2.2.4.0) 似乎该类已经被重命名,但如果你需要它,它就在那里。
NUnit.ConsoleRunner.ConsoleUi.Main(args);
答案 5 :(得分:0)
如果安装了ReSharper,它应该能够检测到[Test]灯具并在每个方法的左侧放置一个图标来运行,并在每个测试夹具的左侧运行全部。我更喜欢这种方式。
大多数工作人员也有TestDriven.NET,由于某种原因不在我的机器上,所以他们想知道发生了什么。这有点好笑。