Глобальная установка бегуна JUnit вместо @RunWith

Не заглядывая в сам исходный код JUnit (мой следующий шаг), есть ли простой способ установить Runner по умолчанию для использования с каждым тестом без необходимости устанавливать @RunWith для каждого теста? У нас есть огромная куча модульных тестов, и я хочу иметь возможность добавить некоторую поддержку по всем направлениям, не изменяя каждый файл.

В идеале я надеюсь на что-то вроде: -Djunit.runner="com.example.foo".


person Andrew Mellinger    schedule 04.05.2011    source источник
comment
Итак, я заглянул в код, где обрабатывается аннотация RunWith, и я не увидел ничего, где бы он откуда-то еще вытягивал раннер по умолчанию.   -  person Andrew Mellinger    schedule 05.05.2011


Ответы (3)


Я не думаю, что это возможно определить глобально, но если вы можете написать свою собственную основную функцию, вы можете сделать что-то подобное с помощью кода. Вы можете создать собственный 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, но для некоторых сценариев автоматического тестирования это может быть вариантом.

person Soulman    schedule 23.08.2013

JUnit не поддерживает глобальную настройку бегуна. Вы можете скрыть @RunWith в базовом классе, но это, вероятно, не поможет в вашей ситуации.

person Peter Niederwieser    schedule 13.05.2011

В зависимости от того, чего вы хотите достичь, вы можете глобально влиять на поведение теста, используя пользовательский файл RunListener. Вот как настроить его с помощью подключаемого модуля Maven Surefire: http://maven.apache.org/plugins/maven-surefire-plugin/examples/junit.html#Using_custom_listeners_and_reporters

person Madoc    schedule 16.12.2011