@runwithの代わりにジュニットランナーをグローバルに設定します

StackOverflow https://stackoverflow.com/questions/5886085

  •  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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top