2009-01-20 25 views
41

我有許多測試的基類,他們都需要一些幫助器方法。如何讓Junit 4忽略基本測試類?

它本身沒有任何測試,但JUnit(在eclipse中)正在調用測試運行器並抱怨沒有方法來測試。

我該如何讓它忽略這個類?

我知道我可以添加一個可以解決問題的方法dummyTest,但它也會出現在所有的子類中。

對此提出建議?

+4

BaseTest是抽象的嗎? – duffymo 2009-01-20 15:06:18

+0

它仍然運行 – 2009-01-20 15:14:00

+2

看到類似的問題:http://stackoverflow.com/questions/672466/junit-how-to-avoid-no-runnable-methods-in-test-utils-classes – Synox 2012-09-03 06:41:08

回答

67

用於@Ignore註釋。它也適用於課堂。 見這一個:

@Ignore public class IgnoreMe { 
         @Test public void test1() { ... } 
         @Test public void test2() { ... } 
       } 

此外,您還可以標註一個類 含測試方法與@Ignore 並沒有包含測試將 執行。

來源:JUnit JavaDoc

20

正如一個音符,我總是建議給了忽略一個原因:

@Ignore("This test will prove bug #123 is fixed, once someone fixes it") 

我希望JUnit的XML報告格式,使用運行時來自螞蟻的測試,將有一天包括被忽略的計數(以及原因)以及通過,失敗和錯誤。

11

使類abstract應該足夠用於JUnit 4.如果不起作用,請仔細檢查您正在使用的是哪個版本的JUnit。

這也表達了你的意圖,這只是一個測試的一個片段。

它還阻止JUnit將類中的測試計數爲「忽略」(因此忽略測試的最終計數將成爲您期望的)。

或者,重命名類。大多數跑步者使用類名來確定哪些類是測試,哪些是助手。在Maven中使用默認設置,你只需要確保基類沒有開始或結束Test,並且不與TestCasehttp://maven.apache.org/surefire/maven-surefire-plugin/examples/inclusion-exclusion.html

0

到底有2種選擇:

  1. 你應該創建基本測試類抽象,這就夠了Junit4。如果使用@Igonre屬性,它會將其顯示爲一個被忽略的測試(並將其添加到測試的總數中)。

  2. 您可以更改測試類它不會在啓動字測試(區分大小寫)或測試名稱結尾/或在年底這個詞的TestCase的名稱。

順便說一句:@Igonre是針對不同的用例,當你想忽略一個特定的測試。