2010-11-04 18 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,則整個測試類將被忽略,並且該類下的所有測試都將被忽略。

我在有集成測試時使用這個。