2013-11-22 7 views
0

Я выполнил свой собственный тест бегун с помощью метода переопределяется runChild():Как получить результаты теста JUnit от тестового бегуна?

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 
    // ... 
    } 

    // ... 

} 

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

ответ

0

Я нашел решение по регистрации слушателя перед выполнением 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); 

     // ... 

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

+0

Знаете ли вы, что [Правила] (https://github.com/junit-team/junit/wiki/Rules)? –

+0

Правила должны быть реализованы на уровне тестового класса/метода, но я не хочу, чтобы мои тесты ничего не знали о последующих действиях – user1613270

Смежные вопросы