いくつかのモジュールで1つを除くすべてのテストをスキップするために、コマンドライン引数を提供する方法はありますか?別のテストを実行する必要があるたびにpom.xmlを変更する必要はありませんか?
たとえば、TeamCityでビルド構成を作成し、一部のモジュールで単一のテストのみを実行するためのコマンドライン引数を提供します。次回は変更して別のテストを実行する必要があります。
おそらく、CIの使用方法ではなく、それでもあります。
surefireで1つのテストを実行する ?に関するドキュメントを読んだと思います。彼らがあなたに言っていないのは、サブモジュールでそれを行う方法です:
mvn test -Dtest=testname -pl subproject
ここで、subproject
はそのテストを含むプロジェクトです。 mvn manページから:
-pl、-projects argすべてのプロジェクトの代わりにビルドする指定されたリアクタプロジェクトのカンマ区切りリスト。プロジェクトは、[groupId]:artifactIdまたはその相対パスで指定できます。
私が見る他の答えは、ビルドされる他のサブモジュールに依存するプロジェクトについては完全には完成していません。 1つのオプションは、mvn install
を実行して必要なjarを~/.m2/...
にインストールすることですが、そのオプションはあまり「クリーン」ではありません。
次のコマンドはサブモジュールを構築し、指定されたテストクラスのみを実行します。これは、親モジュールレベルで実行されます。また、サブモジュール名を指定する必要はありません。
mvn test -DfailIfNoTests=false -Dtest={test_class_name} -am
余談ですが、これはmvn clean test -Dfa.....
でも構いません。テストの実行中は常にclean
を実行する習慣があります。
参考文献..-am
は、他のすべてのサブモジュールを作成します。-DfailIfNoTests=false
は、他のモジュールでテストを実行するつもりはないため、プロセス全体が失敗することはありません。-pl
オプションは、-am
がすでにすべてを構築しているため必要ありません
テストするモジュールが他のプロジェクトに依存している場合、ソリューションは次のようにコマンドを変更することで機能します。
mvn test -DfailIfNoTests=false -Dtest=testname -pl subproject
リファレンス: http://www.automatethebox.com/2015/12/some-helpful-commands-to-build-multi.html