我想用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 documentation,测试方法也可以用[*]表示,所以我试过
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
}
}
更新:我发现surefire bugreport的情况类似,但已修复。我拿了示例代码来演示错误并运行它,效果很好。然后我改变了跑步者到junitparams跑步者,得到了同样的错误,如上所述。我想这可能是跑步者的一个错误,所以我在他们的github上打开了issue。