2010-11-04 48 views
34

有没有一种方法让nunit测试结束并告诉测试运行者它应该被忽略/忽略,而不是成功或失败?以编程方式跳过一个nunit测试

我的动机是,我有一些测试不适用于某些情况,但在测试(或者灯具)开始运行之前无法确定。

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

我知道[Ignore]属性,但这是编译。我正在寻找一个与运行时间相同的程序。例如:

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

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

+0

有意思,我想看看这个! – 2010-11-04 10:03:08

回答

35
Assert.Ignore(); 

具体你问什么,但也有:

Assert.Inconclusive(); 
+2

谢谢!我不能相信我错过了Assert.Ignore,但它正是我需要的。它看起来像Assert.Inclusive是在nunit 2.5中引入的,因为我仍然使用2.4.8,所以我至少有一个借口不知道那个... – 2010-11-04 10:19:16

0

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

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

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

我在有集成测试时使用这个。