@runwithの代わりにジュニットランナーをグローバルに設定します
-
28-10-2019 - |
質問
Junitソース自体を調べることなく(私の次のステップ)、すべてのテストで@runwithを設定することなく、すべてのテストで使用するデフォルトのランナーを簡単に設定する簡単な方法はありますか?私たちはユニットテストの巨大な山を持っています、そして、私はすべてのファイルを変更することなく、ボード全体にいくつかのサポートを追加できるようにしたいと思っています。
理想的には、-djunit.runner = "com.example.foo"のようなものを願っています。
解決
これがグローバルに定義することはできないと思いますが、自分のメイン関数を書くことがオプションである場合、コードを介して同様のことを行うことができます。カスタムを作成できます RunnerBuilder
そしてそれをaに渡します 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のようなUIテストランナーと統合されませんが、一部の自動テストシナリオではオプションになる可能性があります。
他のヒント
Junitは、ランナーのグローバルな設定をサポートしていません。 @runwithを基本クラスで隠すことができますが、これはおそらくあなたの状況に役立つでしょう。
達成したいことに応じて、カスタムを使用することで、グローバルにテスト動作に影響を与えることができるかもしれません RunListener
. 。 Maven SureFireプラグインで構成する方法は次のとおりです。 http://maven.apache.org/plugins/maven-surefire-plugin/examples/junit.html#using_custom_listeners_and_reporters