【问题标题】:Programmatically skip an NUnit test以编程方式跳过 NUnit 测试
【发布时间】:2011-05-04 23:24:38
【问题描述】:

有没有办法让 NUnit 测试结束并告诉测试运行者它应该被视为跳过/忽略,而不是成功或失败?

我这样做的动机是我有一些在某些情况下不适用的测试,但这在测试(或者可能是夹具)开始运行之前无法确定。

显然在这种情况下,我可以从测试中返回并让它成功,但是 (a) 这似乎是错误的,并且 (b) 我想知道测试已被跳过。

我知道 [Ignore] 属性,但这是编译的。我正在寻找一个运行时、程序化的等价物。比如:

if (testNotApplicable)
    throw new NUnit.Framework.IgnoreTest("Not applicable");

或者以编程方式跳过测试是错误的?如果是这样,我该怎么办?

【问题讨论】:

    标签: .net unit-testing nunit


    【解决方案1】:
    Assert.Ignore();
    

    具体是您所要求的,但也有:

    Assert.Inconclusive();
    

    【讨论】:

    • 谢谢!我不敢相信我错过了 Assert.Ignore,但这正是我所需要的。看起来 Assert.Inconclusive 是在 nunit 2.5 中引入的,而且由于我仍在使用 2.4.8,我至少有一个不知道那个的借口......
    【解决方案2】:

    我有一个TestInit()TestInitialize 方法,其中存在如下条件:

        //This flag is the most important.False means we want to just ignore that tests
        if (!RunFullTests)
            Assert.Inconclusive();
    

    RunFullTests 是位于常量类中的全局布尔变量。如果我们将此设置为 false,则整个测试类将被忽略,并且该类下的所有测试都将被忽略。

    我在进行集成测试时使用它。

    【讨论】:

      猜你喜欢
      • 2016-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-19
      • 2011-04-05
      • 1970-01-01
      • 2015-12-04
      相关资源
      最近更新 更多