我想用 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
}
}
更新:我发现了类似情况的肯定错误报告,但已修复。我获取了演示错误的示例代码并运行它,运行良好。然后我将 runner 更改为 junitparams runner 并得到与上述相同的错误。我想这可能是跑步者的错误,所以我在他们的 github 上打开了问题。