Лучший способ протоколирования исключений при неудачных тестах (например, с помощью junit-правила)

Когда я запускаю полный набор тестов, было бы полезно, если бы исключения, которые вызвали сбой теста, появлялись в моем (SLF4J-)лог-журнале. Какой лучший метод для достижения этого?

Что я хотел бы получить

, так это junit4 правило, которое обрабатывает регистрацию исключений для меня. Код

@Rule
public TestRule logException = new TestWatcher() {
    @Override
    public void failed(Description d) {
        catch (Exception e) {
            logger.error("Test ({}) failed because of exception {}", d, e);
            throw e;
        }
    }
}

, конечно, не работает, так как я могу ловить исключения только из пробного блока. Есть ли обходной путь, чтобы как-то достичь этого таким же простым и общим способом?


BTW, то, что я сейчас делаю

- это протоколирую исключение в момент его создания. Но было бы приятнее протоколировать исключения на интерфейсе между вызывающим абонентом и библиотекой, так что в моем случае в тестовом примере. Не протоколирование в момент создания исключений также гарантировало бы, что они не появятся несколько раз, когда звонящий решит их протоколировать.

5
задан Jens Schauder 9 June 2012 в 08:57
поделиться