1

以下のコマンドを使用しようとしています。私は持っている

  • Mytest1_test.java、
  • Mytest2_test.java、
  • Mytest3_test.java、
  • Mytest4_test.java、
  • Mytest5_test.java、

最初の4つを一度に実行したい。

mvn test -Dtest=Mytest[1-4]_test

しかし、実行するテストがありません。

アドバイスをいただけますか...?

4

4 に答える 4

2

使用する:

mvn -Dtest=Mytest*_test test
于 2012-07-25T19:43:48.467 に答える
0

正規表現を一致させるには、パッケージ名を追加する必要がある場合があります-プレフィックスを付けるだけ.*で十分かもしれません(.*サフィックスの有無にかかわらず試すことができます-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] など) を実行し、必要な組み合わせが得られるまで絞り込み続けます。

于 2022-01-10T08:25:22.443 に答える