如何在 Visual Studio 中分别运行不同文件夹/项目中的(单元)测试?
-
08-06-2019 - |
题
我需要一些关于如何轻松地在 Visual Studio 中分离单元测试和集成测试的测试运行的建议。我经常或总是会按照上图所示构建解决方案:单元测试和集成测试的单独项目。单元测试运行非常频繁,而集成测试自然会在上下文正确对齐时运行。
我的目标是以某种方式能够配置当我使用键盘快捷键时运行哪些测试(或测试文件夹)。测试最好由图形测试运行程序 (ReSharpers) 运行。例如
- Alt+1 运行项目 BLL.Test 中的测试,
- Alt+2 运行项目 DAL.Tests 中的测试,
- Alt+3 运行它们(即[Tests] 文件夹中的所有测试,以及
- Alt+4 运行文件夹 [Tests.Integration] 中的测试。
TestDriven.net 可以选择仅运行所选文件夹或项目中的测试,方法是右键单击它并选择“运行测试”。能够通过键盘命令和图形测试运行器来做到这一点会很棒。
目前我使用 VS2008、ReSharper 4 和 nUnit。但对于一般设置的建议当然也是值得赞赏的。
解决方案
实际上,我通过使用绑定到宏的键盘命令自己找到了一种解决方案。宏是通过菜单“工具”>“宏”>“记录临时宏”录制的。录制时,我选择了 [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 文件。然后可以轻松地将其签入版本控制并分发给参与该项目的每个人。
其他提示
这是一个有点繁琐的解决方案,但您可以配置一些 外部工具 对于您想要运行的每组测试。我不确定您是否能够以这种方式启动 ReSharper 测试运行程序,但您可以运行 nunit 的控制台版本。设置完这些工具后,您可以将键盘快捷键分配给命令“Tools.ExternalCommand1”、“Tools.ExternalCommand2”等。
这不会真正很好地扩展,并且改变起来很尴尬 - 但它会给你运行测试的键盘快捷键。确实感觉应该有一种更简单的方法来做到这一点。
您可以使用 VS 宏来解析 XML 文件,然后使用 /fixture 命令行参数调用 nunit.exe 以指定要运行的类或生成选择保存文件并使用该文件运行 nunit。
我从来没有用过这个,但也许它可以帮助......
http://www.codeplex.com/VS2008UnitTestGUI
“项目描述此项目是关于在多个.NET单元测试中运行所有单位测试,该测试由Visual Studio 2008编码。”