2013-06-28 113 views
0

爲了測試我定義的Map類,我從Google Collections庫中擴展了MapInterfaceTestTestCase子類並使用JUnit 4註釋

問題是我想爲這個類添加更多的測試,並且能夠在開發時忽略具有@Ignore註釋的特定長時間運行或破壞的測試,但是因爲MapInterfaceTest擴展了TestCase,測試在Junit3兼容性下運行模式,並且註釋被忽略。

有沒有辦法讓Junit尊重擴展TestCase的測試類的註解?

回答

2

在你的測試課上試試這個註解。

@RunWith(JUnit4.class) 
public class MyTestCase extends MapInterfaceTest {...} 

這應該強制Junit在執行中使用Junit4而不是Junit3。也許這適用於你的測試用例。

但是,JUnit4不會選擇舊式的「test *」測試方法,因爲它依賴於@Test註釋。如果你擴展類沒有這些註釋,你不能直接添加,可以覆蓋測試,以添加註釋的子類,像這樣:

@Test 
@Override 
public void testFoo() 
{ 
    super.testFoo(); 
} 
+0

你說得對,這與您所說的完全相同,註釋是受到尊重的,但超類中的舊式test *方法將被忽略。我想我可以重寫所有的方法,如'@Override @Test public void testFoo {super.testFoo();}'這就解決了這個問題。 – MikeFHay

+0

好,太棒了!告訴我,如果ovrriding確實工作。這將是有趣的。 – Sorontur

+0

它確實有效,但是我認爲這是太多的工作,只是將我的新測試方法分解到不同的類中。我編輯了你的答案,接受它或進行類似的編輯,我會接受這個答案:) – MikeFHay