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

时间:2008-08-17 21:21:08

标签: visual-studio unit-testing configuration vsx extensibility

Visual Studio folder structure

我需要一些建议,以便我可以轻松地在Visual Studio中为单元测试和集成测试分开测试运行。通常,或者总是,我构建了如上图所示的解决方案:用于单元测试和集成测试的单独项目。单元测试运行频繁,而当上下文正确对齐时,自然会运行集成测试。

我的目标是以某种方式配置在我使用键盘快捷键时运行哪些测试(或测试文件夹)。测试最好由图形测试运行器(ReSharpers)运行。例如,

  • Alt + 1在项目BLL.Test中运行测试,
  • Alt + 2在项目DAL.Tests中运行测试,
  • Alt + 3同时运行它们(即[Tests]文件夹中的所有测试和
  • Alt + 4在文件夹[Tests.Integration]中运行测试。

TestDriven.net可以选择在所选文件夹或项目中运行测试,方法是右键单击它并选择Run Test(s)。能够做到这一点,但通过键盘命令和图形测试运行器将是很棒的。

TestDriven.net test run output

目前我使用的是VS2008,ReSharper 4和nUnit。但是,对于一般设置的建议当然也很感激。

4 个答案:

答案 0 :(得分:2)

我实际上通过使用绑定到宏的键盘命令为我自己找到了一种解决方案。宏从菜单Tools> Macros> Record 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文件的方式。然后可以轻松地将其签入版本控制并分发给使用该项目的每个人。

答案 1 :(得分:0)

这是一个非常繁琐的解决方案,但您可以为要运行的每组测试配置一些external tools。我不确定你是否能够以这种方式启动ReSharper测试运行器,但是你可以运行nunit的控制台版本。完成这些工具设置后,您可以为命令“Tools.ExternalCommand1”,“Tools.ExternalCommand2”等分配键盘快捷键。

这不会很好地扩展,并且改变很尴尬 - 但它会为您提供运行测试的键盘快捷键。确实应该有一种更简单的方法。

答案 2 :(得分:0)

您可以使用VS宏来解析XML文件,然后使用/ fixture命令行参数调用nunit.exe以指定要运行的类或生成选择保存文件并使用该文件运行nunit。

答案 3 :(得分:0)

我从未使用过这个,但也许它可以帮助......

http://www.codeplex.com/VS2008UnitTestGUI

“项目说明 该项目是关于在使用Visual Studio 2008编码的多个.NET Unit测试程序集中运行所有单元测试。“