在C# Express 2010中使用NUnit调试

业余用.net写点开源的东西, 自然不能继续用VSTS了, 选了不花一毛钱的C#Express+NUnit. 不料却集成不到Express中. 根本原因在于微软要保证Express这样的入门级免费产品不至于强大到影响收费的VS, 禁止了Express的扩展以及DebugAction的配置.

详见:InfoQ:TestDriven.NET和Visual Studio Express的纠纷往事

 

虽然我们还可以老老实实的按照:编译测试, 启动NUnit, 附加调试器, 运行测试的流程来达到目的, 但其实不必这么麻烦. 一番折腾我终于找到了一个用起来相对简单的办法, 易用性和MSTest差不多.

 

首先是解决NUnit 2.54对CLR4.0支持的一个小麻烦, 改一下nunit.exe.config即可, 多谢刘冬大哥的指点:关于nunit调试VS2010中的4.0程序集的问题

 

之后就是如何在Express中方便的调试了.

我的办法是建立了一个exe项目作为TestRunner, 里面只干了一件事情, 就是在相同的应用程序域中引导NUnit启动. 代码如下:

using System;

namespace TestRunner
{
static class Program
{
[STAThread]
static void Main(string[] args)
{
NUnit.Gui.Class1.Main(args);
}
}
}

NUnit.Gui.Class1类型位于nunit.exe中, 在nunit的安装目录中可以找到.

此外还需要把TestRunner项目配置里的WorkFolder设置成NUnit的lib目录, 比如"D:\Program Files\NUnit 2.5.4\bin\net-2.0\lib"

CommandArgument根据需求填, 多个Test项目也可以藉此共享同一个TestRunner.

到此全部功能都有了, F5即可开始单元测试, 并且可以下断点调试.

我这办法不见得最好, 希望能抛砖引玉的效果吧.

posted @ 2010-06-30 22:48  Robird  阅读(1349)  评论(0编辑  收藏  举报