以下のコマンドを使用しようとしています。私は持っている
- Mytest1_test.java、
- Mytest2_test.java、
- Mytest3_test.java、
- Mytest4_test.java、
- Mytest5_test.java、
最初の4つを一度に実行したい。
mvn test -Dtest=Mytest[1-4]_test
しかし、実行するテストがありません。
アドバイスをいただけますか...?
使用する:
mvn -Dtest=Mytest*_test test
正規表現を一致させるには、パッケージ名を追加する必要がある場合があります-プレフィックスを付けるだけ.*
で十分かもしれません(.*
サフィックスの有無にかかわらず試すことができます-JUnit4で「.class」と一致させるために使用しました):
mvn test "-Dtest=%regex[.*Mytest[1-4]_test.*]"
テストの組み合わせを追加するときに読みやすくするために、-Dtest引数全体を引用符で囲んでいることに注意してください。
問題のあるテストの追加
特定の組み合わせでのみ失敗する問題のあるテストがある場合は、コンマ、スペース、および別のテストを引用符 ( "
) 内に追加できますが、]
.
Mytest5_test
がテスト 1、2、および 3 で失敗したとします。最初の 3 に正規表現を使用し、その後にコンマと標準マッチングを使用して、Mytest5_test
パッケージをキャッチする必要がある場合は * を使用できます。
mvn test "-Dtest=%regex[.*Mytest[1-3]_test.*], *Mytest5_test"
厳密に言えば、引用符は必要ありませんが、引用符がないと、さまざまなテスト間のスペースを削除する必要があり、コマンドが読みにくくなります。
競合するテストを見つける
他のテストと組み合わせて実行したときにテストが失敗した場合 (静的モックが原因であることが多い)、正規表現を使用して競合するテストを見つけることもできます。
my.co.[am] で始まるパッケージ内のすべてのテストを実行するには、Mytest5_test
次を使用できます。
mvn test "-Dtest=%regex[.*my.co.[a-m].*], *Mytest5_test"
私の記憶が正しければ、JUnit 4 にはスラッシュ区切り記号が必要であり、JUnit 5 にはドット区切り記号が必要であり、Spock ではパッケージのないクラス名しかありません。.*
上記の正規表現のようにワイルドカードの単一文字を使用すると、.
テスト名にパッケージ名のスラッシュまたはドットが含まれていても機能します。
次に、正規表現を変更して他のテスト ([nz] など) を実行し、必要な組み合わせが得られるまで絞り込み続けます。