Как получить результаты теста JUnit от тестировщика?

Я реализовал свой собственный тестовый бегун с переопределенным методом runChild():

public class MyTestRunner extends BlockJUnit4ClassRunner {

  // ...

  @Override
  protected void runChild(FrameworkMethod method, RunNotifier notifier) {
    if (method.getAnnotation(Ignore.class) != null) {
        return;
    }

    // Do some global pre-action
    // ...

    // Runs the passed test case
    super.runChild(method, notifier);

    // Do some global post-action depending on the success of the test case
    // ...
  }

  // ...

}

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


person user1613270    schedule 22.11.2013    source источник


Ответы (1)


Я нашел решение, зарегистрировав прослушиватель перед выполнением runChild():

        // ...

        // Add callback listener to do something on test case success
        notifier.addListener(new RunListener() {
            @Override
            public void testRunFinished(Result result) throws Exception {
                super.testRunFinished(result);
                if (result.getFailureCount() == 0) {
                    // Do something here ...
                }
            }
        });

        // Runs the passed test case
        super.runChild(method, notifier);

        // ...

Но есть ли лучший способ сделать это?

person user1613270    schedule 22.11.2013
comment
Правила должны быть реализованы на уровне тестового класса/метода, но я не хочу, чтобы мои тесты знали что-либо о пост-действиях. - person user1613270; 25.11.2013