https://github.com/junit-team/junit/wiki/Rules#testwatchmantestwatcher-rulesで詳述されている TestWatcher を使用する必要があります
public class WatchmanTest {
private static String watchedLog;
@Rule
public TestRule watchman = new TestWatcher() {
@Override
public Statement apply(Statement base, Description description) {
return super.apply(base, description);
}
@Override
protected void succeeded(Description description) {
watchedLog += description.getDisplayName() + " " + "success!\n";
}
@Override
protected void failed(Throwable e, Description description) {
watchedLog += description.getDisplayName() + " " + e.getClass().getSimpleName() + "\n";
}
@Override
protected void skipped(AssumptionViolatedException e, Description description) {
watchedLog += description.getDisplayName() + " " + e.getClass().getSimpleName() + "\n";
}
@Override
protected void starting(Description description) {
super.starting(description);
}
@Override
protected void finished(Description description) {
super.finished(description);
}
};
@Test
public void fails() {
fail();
}
@Test
public void succeeds() {
}
}
メソッドを実装すると、JUnit は、失敗の原因となった例外と、テストに関する詳細情報を保持する Description オブジェクトを含む、failed() メソッドのコールバックを提供しました。また、そのページの ExternalResource クラスを確認する必要があります。これには、書き込み先のファイルなど、TestWatcher で使用するリソースを確実にセットアップおよび破棄する方法が詳しく説明されています。