如何在Visual Studio中分别在不同的文件夹/项目中运行(单元)测试?
我需要一些建议,以了解如何在Visual Studio中轻松地将单元测试和集成测试的测试运行分开。我经常或者总是按照上图所示构建解决方案:用于单元测试和集成测试的单独项目。当上下文正确对齐时,单元测试非常频繁地运行,而集成测试自然而然地运行。
我的目标是以某种方式能够配置使用键盘快捷键时要运行的测试(或者测试文件夹)。最好由图形测试运行程序(ReSharpers)运行测试。所以举个例子
- Alt + 1在项目BLL.Test中运行测试,
- Alt + 2在项目DAL中运行测试。
- Alt + 3可以同时运行它们(即[Tests]文件夹中的所有测试,以及
- Alt + 4在文件夹[Tests.Integration]中运行测试。
TestDriven.net可以通过右键单击它并选择"运行测试"来选择仅运行所选文件夹或者项目中的测试。能够执行此操作,但是通过键盘命令并带有图形测试运行程序将是很棒的。
目前,我使用VS2008,ReSharper 4和nUnit。但是一般来说,对于安装的建议也值得赞赏。
解决方案
回答
这是一个有点麻烦的解决方案,但是我们可以为要运行的每个测试组配置一些外部工具。我不确定是否可以通过这种方式启动ReSharper测试运行程序,但是可以运行nunit的控制台版本。设置完这些工具后,即可为命令" Tools.ExternalCommand1"," Tools.ExternalCommand2"等分配键盘快捷键。
这确实无法很好地扩展,并且很难更改,但是它将为我们提供用于运行测试的键盘快捷键。确实感觉应该有一种更简单的方法来执行此操作。
回答
我实际上是通过使用绑定到宏的键盘命令自己找到了一种解决方案。宏是从菜单工具>宏>记录TemporaryMacro记录的。在录制时,我选择了[Tests]文件夹并运行ReSharpers UnitTest.ContextRun。这产生了以下宏,
Sub TemporaryMacro() DTE.Windows.Item(Constants.vsWindowKindSolutionExplorer).Activate DTE.ActiveWindow.Object.GetItem("TestUnitTest\Tests").Select(vsUISelectionType.vsUISelectionTypeSelect) DTE.ExecuteCommand("ReSharper.UnitTest_ContextRun") End Sub
然后在"工具">"选项">"环境">"键盘"中将其绑定到它自己的键盘命令。
但是,更棒的是更通用的解决方案,其中我可以准确配置要运行哪些项目/文件夹/类以及何时运行。例如,通过xml文件。然后可以轻松地将其检入版本控制中,并分发给与项目合作的每个人。
回答
我们可以使用VS宏来解析XML文件,然后使用/ fixture命令行参数调用nunit.exe以指定要运行的类或者生成选择保存文件并使用该文件运行nunit。
回答
我从来没有使用过,但也许可以帮忙...。
http://www.codeplex.com/VS2008UnitTestGUI
"项目描述
该项目是关于在用Visual Studio 2008编码的多个.NET单元测试程序集中运行所有单元测试。"