如何在Visual Studio中分别在不同的文件夹/项目中运行(单元)测试?

时间:2020-03-05 18:40:13  来源:igfitidea点击:

我需要一些建议,以了解如何在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单元测试程序集中运行所有单元测试。"