【问题标题】:How do I run (unit) tests in different folders/projects separately in Visual Studio?如何在 Visual Studio 中分别在不同文件夹/项目中运行(单元)测试?
【发布时间】:2010-09-06 01:11:32
【问题描述】:

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

我的目标是在我使用键盘快捷键时能够以某种方式配置要运行的测试(或测试文件夹)。测试最好由图形测试运行程序 (ReSharpers) 运行。比如

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

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

目前我使用 VS2008、ReSharper 4 和 nUnit。但是,对于一般设置的建议当然也值得赞赏。

【问题讨论】:

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


    【解决方案1】:

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

    这不会很好地扩展,而且改变起来很尴尬 - 但它会给你提供运行测试的键盘快捷键。感觉应该有一种更简单的方法来做到这一点。

    【讨论】:

      【解决方案2】:

      实际上,我自己找到了一种解决方案,方法是使用绑定到宏的键盘命令。宏是从菜单工具>宏>记录临时宏中记录的。在录制时,我选择了我的 [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 文件。然后可以轻松地将其签入版本控制并分发给与该项目一起工作的每个人。

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

          我从来没有用过这个,但也许它可以帮助....

          http://www.codeplex.com/VS2008UnitTestGUI

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

          【讨论】:

            猜你喜欢
            • 2018-02-17
            • 2015-08-02
            • 2016-02-06
            • 1970-01-01
            • 2011-04-19
            • 1970-01-01
            • 1970-01-01
            • 2023-03-29
            • 1970-01-01
            相关资源
            最近更新 更多