失敗したテストを Maven で再実行したい。これにはsurefire.rerunFailingTestsCountを使用しています:
mvn '-Dtest=LoginTest#loginAsValidUser' '-Dsurefire.rerunFailingTestsCount=1'clean test
ただし、テストが失敗した後、再実行しようとしても、junit によって再度検出されません。
org.junit.runner.manipulation.Filter.initializationError(org.junit.runner.manipulation.Filter)
Run 1: Filter.initializationError » No tests found matching Method loginAsValidUser[...
Run 2: Filter.initializationError » No tests found matching Method loginAsValidUser[...
Run 3: Filter.initializationError » No tests found matching Method loginAsValidUser[...
Mavenのドキュメントによると、テスト方法も[*]で示すことができるので、試してみました
mvn '-Dtest=LoginTest#loginAsValidUser[*]' -Dsurefire.rerunFailingTestsCount=1 clean test
テストクラス/メソッド名を指定するさまざまなバリエーションがありますが、結果は同じです。これを引き起こしているアイデアはありますか?
maven-surefire プラグインのバージョンは 2.19.1、junit のバージョンは 4.12、junitparams のバージョンは 1.0.5 です。
テストクラスは次のようになります。
@RunWith(JUnitParamsRunner.class)
public class LoginTest {
@Test
@FileParameters(value = "src/main/resources/login_data.csv")
@TestCaseName("{method}[{index}]")
public void loginAsValidUser(String username, String password) {
//test
}
}
更新:同様の状況で確実なバグレポートが見つかりましたが、修正されました。バグを実証するサンプルコードを取得して実行したところ、うまく機能しました。次に、ランナーをjunitparamsランナーに変更し、上記と同じエラーが発生しました。これはランナーのバグかもしれないと思うので、彼らの github で問題を開きました。