2012-04-12 67 views
9

我正在嘗試使用API​​調用JUnit測試套件。我知道,你可以使用適合了測試類如下:如何以編程方式使用JUnit4執行測試套件?

@RunWith(Suite.class) 
@Suite.SuiteClasses({ 
    Test1.class, 
    Test2.class, ... 
}) 

但是,有沒有觸發使用Java API整個套件的方式,使用JUnitCore例如?

例如,你可以使用下面的代碼觸發測試:

Runner r = 
try { 
    r = new BlockJUnit4ClassRunner(Class.forName(testClass)); 
} catch (ClassNotFoundException | InitializationError e) { 
    // handle 
} 
JUnitCore c = new JUnitCore(); 
c.run(Request.runner(r)); 

更新:

從API,它似乎套件類本身是一個亞軍,因此,下面的代碼似乎工作:

Suite suite = new Suite(klass, new RunnerBuilder() { 
... // Implement methods 
}); 
JUnitCore c = new JUnitCore(); 
c.run(Request.runner(suite)); 

但我不知道這是一種推薦的方法,或者如果有任何缺點寫入t他上面的代碼。

回答

12

只要指定的套件類的名稱JUnitCore:

Computer computer = new Computer(); 

JUnitCore jUnitCore = new JUnitCore(); 
jUnitCore.run(computer, MySuite.class); 
+0

謝謝馬修!我一定會試試這個。與此同時,你有更新的代碼片段的建議嗎? – Neel 2012-04-16 14:13:35

4

您還可以在使用命令提示符

的Java org.junit.runner.JUnitCore測試類名

+5

我認爲這不符合「以編程方式」。 – oers 2012-04-13 09:04:27

+1

它會,如果你使用runtime.exec – 2012-04-13 10:50:28

+2

或JunitCore.main(testClassName) – 2012-04-15 15:10:55

相關問題