我使用RunListener來讓測試在寫入System.out時失敗,但是當我失敗()unittest時,偵聽器被移除。有沒有辦法讓測試失敗而不刪除監聽器?JUnit RunListener在失敗時被移除()
爲了便於識別代碼示例
public class OutputListenerTest {
@Test
public void testPrintIsDicovered() {
JUnitCore runner = new JUnitCore();
// the OutputListener calls fail() when something was written
runner.addListener(new OutputListener());
Result result = runner.run(TestWithOutput.class);
}
public static class TestWithOutput {
@Test
public void testOutput1() {
System.out.println("foo");
}
@Test
public void testOutput2() {
System.out.println("bar");
}
}
}
我期待什麼:2失敗的測試
的是:第一次測試失敗,並刪除偵聽器。
根據要求,這裏是OutputListener代碼http://paste.robbi5.com/4916ca5b 可以不粘貼它在這裏,它很長,並不會幫助解決這個問題嗎?
多一點背景
我選擇了RunListener,因爲它的工作原理與Maven很容易,只需添加
<properties>
<property>
<name>listener</name>
<value>OutputListener</value>
</property>
</properties>
到Maven的萬無一失,插件和mvn test
顯示了測試使用的System.out某種程度上來說。
就我個人而言,我可能會簡單地添加一個自定義TestRule ...應該工作,以包裹實際檢驗器檢查輸出。 –
我創建了這個例子,我的偵聽器沒有被刪除,所以我會查看你的偵聽器代碼。你能供應嗎? –
Apidoc說:「如果一個偵聽器在處理測試事件時拋出一個異常,它將在測試運行的其餘部分被刪除。」當調試並逐步完成測試時,removeListener被調用。所以我非常確定Listener被刪除:) – globalworming