Глобальная настройка бегуна JUnit вместо @RunWith - PullRequest
7 голосов
/ 04 мая 2011

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

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

Ответы [ 3 ]

1 голос
/ 24 августа 2013

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

1 голос
/ 13 мая 2011

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

0 голосов
/ 16 декабря 2011

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

...