2010-04-19 26 views
1

我想知道如何在java程序中運行一些JUnit4測試。基本上 - 根據運行時的一些條件,我需要決定使用哪個測試運行器。使用Junit3我可以重寫TestCase類中的runTest方法 - 但是在JUnit4測試中不擴展TestCase類,所以我沒有任何可以重寫的...是否有某種方法需要實現...或者其他...運行JUnit4測試 - 從一個Java程序

回答

0

下面是一些對你的示例代碼:

public void checkTests() throws org.junit.runners.model.InitializationError { 
    checkTestClass((Class<?>) MyTestClss.class); 
} 

private void checkTestClass(Class<?> theClass) throws InitializationError { 
    final RunNotifier notifier = new RunNotifier(); 
    notifier.addListener(new RunListener() { 
     @Override 
     public void testFailure(Failure failure) throws Exception { 
      Assert.fail(failure.getMessage()); 

     } 
    }); 

    final Runner runner = new BlockJUnit4ClassRunner(theClass); 

    runner.run(notifier); 
} 
+0

這看起來很有前途。我遇到的問題是我必須在每個測試用例之前運行一個方法(不能是靜態的)......例如使用JUnitCore runner。達到此目的的最佳方法是什麼? – markovuksanovic 2010-04-19 10:06:12

0

我的問題是,我有每個測試用例

如果非之前運行的方法(不能是靜態的)靜態方法與預處理測試用例有關,您可以通過在您的測試課程中使用@Before註釋方法來實現此目的。查看Junit4文檔以瞭解@Before的行爲。

否則,簡單地觸發一個JUnit測試類,你可以使用下面的代碼:

Runner r = 
try { 
    r = new BlockJUnit4ClassRunner(Class.forName(testClass)); 
} catch (ClassNotFoundException | InitializationError e) { // FIX if necessary: JDK 7 syntax 
    // handle 
} 
JUnitCore c = new JUnitCore(); 
c.run(Request.runner(r)); 

希望有所幫助。