JUnitTestRuleTestWatcher を使用できます。ATestRule
は、テストメソッドの前後にコードを実行します(@Before
およびと同様@After
)が、より多くの情報、さらに重要なことに、テストの結果にアクセスできます。TestWatcherは、、、、などsucceeded()
のメソッドを定義します。これらのメソッドを実装して、イベントの通知を受け取ることができます。failed()
starting()
finished()
次の例は、失敗したアサーションとともに失敗したテストを出力するだけです。
public class TestWatcherTest {
@Rule
public TestWatcher testWatcher = new TestWatcher() {
protected void failed(Throwable e, Description description) {
System.out.println("" + description.getDisplayName() + " failed " + e.getMessage());
super.failed(e, description);
}
};
@Test
public void test1() {
Assert.assertEquals("hello world", 3, 4);
}
}
System.out.println()の代わりに、明らかに好きなことを行うことができます。これは出力として生成されます:
test1(uk.co.farwell.junit.TestWatcherTest) failed hello world expected:<3> but was:<4>
失敗したアサーションは例外であるため、スタックトレースなどにアクセスできることに注意してください。