2012-06-11 44 views
0

我有幾個動態加載的類(Class<TestCase>的實例)。我需要通過Maven運行這些測試(mvn verify)。現在我想知道如何去做。我所知道的是我可以做的:JUnit,動態加載的測試類

Class<TestCase>[] classes = createTests(); 
JUnitCore junit = new JUnitCore(); 
junit.addListener(new TextListener(System.out)); 
junit.run(classes); 

這只是打印結果到控制檯。我想要報告所有測試用例的單獨測試(例如在Jenkins中,例如與參數化運行器相同)。你能指點我正確的方向嗎?我想我必須創建自定義亞軍。

測試類從第三方庫生成。以下遺憾不起作用(它什麼也沒有):

((TestCase) classes[0].newInstance()).run() 

謝謝。

回答

0

所以我做了一些RTFM,並帶有簡單的解決方案。我創建了具有RunNotifier場RunListener類,overrided所有方法和委託給通知等效火災*方法,具有以下運行方法創建自定義的Runner:

@Override 
public void run(RunNotifier runNotifier) { 
    try { 
     Class<?>[] classes = createTests(); 
     JUnitCore junit = new JUnitCore(); 
     junit.addListener(new MyListener(runNotifier)); 
     junit.run(classes); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

,並開始測試這個類:

@RunWith(MyRunner.class) 
public class SomeTest { 
}