Глобально устанавливая бегун JUnit вместо @RunWith
Не глядя на сам исходный код JUnit (мой следующий шаг), есть ли простой способ установить Runner по умолчанию, который будет использоваться с каждым тестом, без необходимости устанавливать @RunWith для каждого теста? У нас огромная куча юнит-тестов, и я хочу иметь возможность добавить некоторую поддержку по всем направлениям без необходимости изменять каждый файл.
В идеале я надеюсь на что-то вроде: -Djunit.runner="com.example.foo".
3 ответа
Я не думаю, что это можно определить глобально, но если вы можете написать свою собственную функцию main, вы можете сделать что-то подобное через код. Вы можете создать кастом RunnerBuilder
и передать его Suite
вместе с вашими тестовыми классами.
Class<?>[] testClasses = { TestFoo.class, TestBar.class, ... };
RunnerBuilder runnerBuilder = new RunnerBuilder() {
@Override
public Runner runnerForClass(Class<?> testClass) throws Throwable {
return new MyCustomRunner(testClass);
}
};
new JUnitCore().run(new Suite(runnerBuilder, testClasses));
Это не будет интегрировано с участниками тестирования пользовательского интерфейса, такими как в Eclipse, но для некоторых сценариев автоматического тестирования это может быть вариант.
JUnit не поддерживает глобальную настройку бегуна. Вы можете спрятать @RunWith в базовом классе, но это, вероятно, не поможет в вашей ситуации.
В зависимости от того, чего вы хотите достичь, вы можете повлиять на поведение теста в глобальном масштабе, используя RunListener
, Вот как настроить его с помощью плагина Maven Surefire: http://maven.apache.org/plugins/maven-surefire-plugin/examples/junit.html