JUnitソース自体を調べることなく(私の次のステップ)、すべてのテストで@RunWithを設定しなくても、すべてのテストで使用されるデフォルトのランナーを設定する簡単な方法はありますか?ユニットテストは山ほどありますが、すべてのファイルを変更することなく、全面的にサポートを追加できるようにしたいと考えています。
理想的には、-Djunit.runner="com.example.foo"のようなものを期待しています。
JUnitソース自体を調べることなく(私の次のステップ)、すべてのテストで@RunWithを設定しなくても、すべてのテストで使用されるデフォルトのランナーを設定する簡単な方法はありますか?ユニットテストは山ほどありますが、すべてのファイルを変更することなく、全面的にサポートを追加できるようにしたいと考えています。
理想的には、-Djunit.runner="com.example.foo"のようなものを期待しています。
これをグローバルに定義することは不可能だと思いますが、独自の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のようなUIテストランナーとは統合されませんが、一部の自動テストシナリオではオプションになる可能性があります。
JUnitは、ランナーのグローバル設定をサポートしていません。基本クラスで@RunWithを隠すことはできますが、これはおそらくあなたの状況では役に立ちません。
達成したいことによっては、カスタムを使用してテストの動作にグローバルに影響を与えることができる場合がありますRunListener
。Maven Surefireプラグインを使用して構成する方法は次のとおりです。http://maven.apache.org/plugins/maven-surefire-plugin/examples/junit.html#Using_custom_listeners_and_reporters