Question

Sans regarder dans la source JUnit elle-même (ma prochaine étape), y a-t-il un moyen simple de définir le Runner par défaut à utiliser avec chaque test sans avoir à définir @RunWith à chaque test?Nous avons une énorme pile de tests unitaires, et je veux être en mesure d'ajouter du support à tous les niveaux sans avoir à changer chaque fichier.

Idéalement, j'espère quelque chose comme: -Djunit.runner="com.example.foo".

Était-ce utile?

La solution

Je ne pense pas que cela soit possible de définir globalement, mais si l'écriture de votre propre fonction principale est une option, vous pouvez faire quelque chose de similaire à travers du code.Vous pouvez créer un RunnerBuilder personnalisé et le transmettre à un Suite avec vos classes de test.

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));

Cela ne s'intégrera pas avec les exécuteurs de test d'interface utilisateur comme celui d'Eclipse, mais pour certains scénarios de test automatisés, cela pourrait être une option.

Autres conseils

JUnit ne prend pas en charge la configuration globale du runner.Vous pouvez cacher @RunWith dans une classe de base, mais cela n'aidera probablement pas dans votre situation.

En fonction de ce que vous souhaitez réaliser, vous pourrez peut-être influencer globalement le comportement du test en utilisant un RunListener personnalisé.Voici comment le configurer avec le plugin Maven Surefire: http://maven.apache.org/plugins/maven-surefire-plugin/examples/junit.html#Using_custom_listeners_and_reporters

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top