【问题标题】:How to deal with long-running tests in MSTest如何在 MSTest 中处理长时间运行的测试
【发布时间】:2021-12-28 07:22:50
【问题描述】:

我使用 MSTest 框架进行了一些测试,这些测试运行时间很长。这些测试很有价值,我有时会手动运行它们。但是当我只想运行“所有测试”时,我想默认排除它们。我正在使用 Resharper 测试运行程序来运行测试。

当我将 test test 标记为 [Ignored] 时,我无法再运行它,即使直接选择也不行。

我怎样才能以一种好的方式解决这个问题?

【问题讨论】:

    标签: .net resharper mstest


    【解决方案1】:

    我不知道如何使用 MSTest 实现这一点的任何内置方法。但我看到了一些替代方案:

    1. 使用专用的 MSTest 项目(例如 LongRunningTests)→ 您可以按需手动运行这些测试,也可以在 CI 环境等上运行。
    2. 切换到 NUnit 并使用 Explicit attribute
    3. 在 MSTest 中创建您自己的 LongRunningTest 属性,并在 UI 中排除此类别。
    4. 创建另一个构建配置(例如 ReleaseDebugLoadTest)并使用预处理器指令:
    #if !LoadTest
    [Ignored]
    #endif
    [TestMethod]
    public void TestSomething()
    {
        // the usual AAA stuff
    }
    

    【讨论】:

      【解决方案2】:

      在我看来,这是使用TestCategoryAttribute 的好方法。

      只需标记您的长时间运行的测试:

      [TestCategory("LongRunningTest")]
      [TestMethod]
      public void LongRunningTest()
      {
          // test
      }
      

      然后您可以在构建服务器上参数化 MSTest 的执行。只需使用 the command line parameter /category:!LongRunningTest 进行构建,您想跳过长时间运行的测试。

      您也可以在 VisualStudion 中查看类别。只需转到测试资源管理器并按特征对测试进行分组:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-05
        • 2011-06-05
        • 2010-10-28
        • 2011-04-24
        • 2011-01-19
        • 1970-01-01
        相关资源
        最近更新 更多