业余用.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即可开始单元测试, 并且可以下断点调试.
我这办法不见得最好, 希望能抛砖引玉的效果吧.