Как я могу записать трассировку стека исключений через пользовательский бегун junit? - PullRequest
0 голосов
/ 29 февраля 2012

Привет, у меня есть пользовательский джунит бегун

public class InterceptorRunner extends BlockJUnit4ClassRunner {

    @Retention(RetentionPolicy.RUNTIME)
    @Target(ElementType.TYPE)
    public @interface InterceptorClasses {
        public Class<?>[] value();
    }

    public InterceptorRunner(Class<?> klass) throws InitializationError {
        super(klass);
    }

    @Override
    public Statement methodInvoker(FrameworkMethod method, Object test) {
        InterceptorStatement statement = new InterceptorStatement(super.methodInvoker(method, test));
        InterceptorClasses annotation = test.getClass().getAnnotation(InterceptorClasses.class);
        Class<?>[] klasez = annotation.value();
        try {
            for (Class<?> klaz : klasez) {
                statement.addInterceptor((Interceptor) klaz.newInstance());
            }
        } catch (IllegalAccessException ilex) {
            ilex.printStackTrace();
        } catch (InstantiationException e) {
            e.printStackTrace();
        }
        return statement;
    }

    @Override
    public void run(RunNotifier notifier) {
        FailListener listener = new FailListener();
        notifier.addListener(listener);
        super.run(notifier);
        notifier.removeListener(listener);
    }
}

и пользовательский слушатель

public class FailListener extends RunListener {

    @Override
    public void testFailure(Failure failure) throws Exception {
        System.out.println("test fails");
        super.testFailure(failure);
    }

    public void testStarted(Description description) throws Exception {
        System.out.println("Test started");
        super.testStarted(description);
    }

}

Как мне войти не только System.out.println («тест не пройден»); а также Исключение и некоторая другая информация?

Мне кажется, что возможно использовать сбой, но я не знаю, как это сделать.

1 Ответ

1 голос
/ 29 февраля 2012

Объект Failure имеет метод getException ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...