2016-08-23 83 views
1

我需要在JUnit中以不同方式處理失敗並通過的測試。但JUnit RunListener只有testFinished(),無論測試是否失敗都會調用,而testFailed()僅在失敗測試中調用。是否可以從RunListener.testFinished在JUnit中獲取測試狀態?

有沒有辦法從RunListener.testFinished()找出測試結果(fail \ pass)?

此外,我正在研究另一個JUnit類 - TestWatcher。它有succeeded()方法。但我不想使用它,因爲我還需要在所有測試完成時執行一些操作(testRunFinished() in RunListener

回答

1

使用RunListener類執行此操作的方法是使用子描述標記失敗的測試然後檢查testFinished()方法中的子描述:

class MyRunListener extends RunListener { 
    private static final Description FAILED = Description.createTestDescription('failed', 'failed') 

    @Override 
    void testFailure(Failure failure) throws Exception { 
    failure.description.addChild(FAILED) 
    } 

    @Override 
    void testFinished(Description description) throws Exception { 
    if (description.children.contains(FAILED)) 
     // Process failed tests here... 
    else 
     // Process passed tests here... 
    } 
} 
相關問題