【问题标题】:Can you mark XUnit tests as Explicit?您可以将 XUnit 测试标记为显式吗?
【发布时间】:2016-09-16 23:37:37
【问题描述】:

我正在从 NUnit 过渡到 XUnit(在 C# 中),并且我正在编写一些“集成测试”(IT),我不一定希望测试运行程序作为我的自动构建过程的一部分运行。我通常这样做是为了手动测试,当完整的端到端过程可能由于环境因素(丢失数据等)而无法工作时

在 NUnit 中,您可以使用 Explicit attribute 标记测试,它只会被测试运行器跳过(除非您使用特定的 Category attribute 标记测试并告诉测试运行器明确定位该类别)。

XUnit 是否有类似的方法从测试运行程序中排除测试?

【问题讨论】:

    标签: c# .net testing integration-testing xunit.net


    【解决方案1】:

    我想我found it。显然,您可以像这样修改[Fact] 属性:[Fact(Skip="reason")]。这将跳过测试,但如果不将属性修改回正常,您将无法手动运行它。

    我会继续寻找更好的方法。

    【讨论】:

      【解决方案2】:

      您可以为此使用[Trait] 属性,例如在xunit 中的example,例如,

      [Trait ("Category", "Integration")]
      

      这个project 更进一步,继承了单元、集成等类别。

      【讨论】:

      • 这并不能清楚地代表一种装饰测试方法的方式,使其能够被手动测试但不能与整个测试套件一起运行。
      【解决方案3】:

      Jimmy Bogard 用一个不错的 RunnableInDebugOnlyAttribute 解决了这个问题。见这篇博文:Run tests explicitly in xUnit.net

      public class RunnableInDebugOnlyAttribute : FactAttribute
      {
          public RunnableInDebugOnlyAttribute()
          {
              if (!Debugger.IsAttached)
              {
                  Skip = "Only running in interactive mode.";
              }
          }
      }
      

      【讨论】:

      • Semi-Hacky 但考虑到它不是内置的,这是克服限制的一种非常下降的方式。
      【解决方案4】:

      我用过

      #if DEBUG
      // Must test manually with https://docs.microsoft.com/en-us/sysinternals/downloads/process-explorer
      [Fact]
      #endif
      

      所以这甚至不被认为是在构建服务器上的测试,而通常构建调试版本的开发人员会注意到此测试失败

      【讨论】:

        【解决方案5】:

        我希望有更好的方法来做到这一点。我也有一堆我想保留的“性能”类型测试,所以我可以手动运行它们,但我不希望它们由测试运行器自动运行。我正在使用的解决方案(我不喜欢它)是改变

        [Fact] 到 //[事实]

        我不喜欢这个解决方案的主要原因是因为当我想要手动运行测试时它需要一个额外的步骤,即我必须先取消注释[Fact]。但它确实对我有用,尽管有点笨拙。

        我真正想要的是一种将测试作为测试推销的方法,但只能手动调用,而不能由测试运行者调用。但我还没有找到一种方法来做到这一点。

        【讨论】:

          猜你喜欢
          • 2021-11-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-05-06
          • 1970-01-01
          相关资源
          最近更新 更多