2014-02-05 3 views
0

Я хочу получить уведомление, когда тест не удался. В идеале, я хочу знать, прошел тест или не прошел его в моем @After аннотированном методе. Я понимаю, что это RunListener, который можно использовать для этой цели, но он работает, только если мы запускаем тест с JunitCore. Есть ли способ получить уведомление, если тестовый пример не работает или что-то похожее на RunListener, которое можно использовать с SpringJUnit4ClassRunner?Как использовать RunNotifier или RunListener с помощью SpringJUnit4ClassRunner

ответ

4

Spring TestContext Framework предоставляет TestExecutionListener SPI, который может быть использован для достижения этой цели.

В принципе, если вы реализуете TestExecutionListener (или еще не удлините AbstractTestExecutionListener), вы можете реализовать метод afterTestMethod(TestContext). Из переданного вами TestContext вы можете получить доступ к исключению, которое было выбрано (если оно есть).

Вот Javadoc для org.springframework.test.context.TestContext.getTestException():

Получить исключение, сброшенная во время выполнения метода испытаний.

Примечание: это изменчивое свойство.

Возвращает: исключение, которое было брошено, или нуль, если исключение не было выброшен

FYI: Вы можете зарегистрировать прослушиватель клиента через @TestExecutionListeners аннотацию.

С уважением,

Сэмом

+0

Спасибо большое Сэм. Теперь я использую testexecutionlistener. – Arunav

+0

Arunav, так как мой ответ сработал для вас, не могли бы вы отметить его как «принятого»? Благодаря! –

+0

Я принял это !!! – Arunav

0

Альтернативой 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() {} 
}