Я хочу получить уведомление, когда тест не удался. В идеале, я хочу знать, прошел тест или не прошел его в моем @After аннотированном методе. Я понимаю, что это RunListener, который можно использовать для этой цели, но он работает, только если мы запускаем тест с JunitCore. Есть ли способ получить уведомление, если тестовый пример не работает или что-то похожее на RunListener, которое можно использовать с SpringJUnit4ClassRunner?Как использовать RunNotifier или RunListener с помощью SpringJUnit4ClassRunner
ответ
Spring TestContext Framework предоставляет TestExecutionListener
SPI, который может быть использован для достижения этой цели.
В принципе, если вы реализуете TestExecutionListener
(или еще не удлините AbstractTestExecutionListener
), вы можете реализовать метод afterTestMethod(TestContext)
. Из переданного вами TestContext
вы можете получить доступ к исключению, которое было выбрано (если оно есть).
Вот Javadoc для org.springframework.test.context.TestContext.getTestException()
:
Получить исключение, сброшенная во время выполнения метода испытаний.
Примечание: это изменчивое свойство.
Возвращает: исключение, которое было брошено, или нуль, если исключение не было выброшен
FYI: Вы можете зарегистрировать прослушиватель клиента через @TestExecutionListeners
аннотацию.
С уважением,
Сэмом
Альтернативой JUnits TestWatcher
Правила встроенным.
Это правило позволяет вам выбирать, о чем вы хотите получить уведомление. Вот сжатый пример от JUnit Github Docs
@Test
public class WatcherTest {
@Rule
public final TestRule watcher = new TestWatcher() {
@Override
protected void failed(Throwable e, Description) {}
// More overrides exists for starting, finished, succeeded etc
};
@Test
public void test() {}
}
Спасибо большое Сэм. Теперь я использую testexecutionlistener. – Arunav
Arunav, так как мой ответ сработал для вас, не могли бы вы отметить его как «принятого»? Благодаря! –
Я принял это !!! – Arunav