我将JUnit测试放在不同的测试文件夹中,当我逐一运行它们时,所有的测试都是绿色的,所有测试都在特定的文件夹中通过,但是当它在范围内(一次全部)完成时,某些测试会由于失败某些数据在先前的测试执行期间被更改。因此,这是一种从头开始运行JUnit测试的方法,我已经尝试过
mvn "-Dtest=TestClass1,TestClass2" test
,但是某些测试失败。完成后的样子:
mvn "-Dtest=TestClass1" test
全部通过。或何时:
`mvn "-Dtest=TestClass2" test
全部通过。
答案 0 :(得分:1)
只要TestClass1
和TestClass2
具有相同的状态,就可能无法将它们一起运行,例如它可能是JVM中某个地方的static
字段。您必须重构测试,以便隔离测试并且没有副作用,例如在测试后使用@Before
和@After
清理资源。
您可以使用Maven Surefire插件选项为每个测试生成一个新的JVM,但这会非常低效。
答案 1 :(得分:0)
对于此特定问题,您可以创建一个TestSuite。
创建两个测试套件类 在类上附加@RunWith(Suite.class)批注。
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
@RunWith(Suite.class)
@Suite.SuiteClasses({
TestJunit1.class
})
public class JunitTestSuite1 {
}
@RunWith(Suite.class)
@Suite.SuiteClasses({
TestJunit2.class
})
public class JunitTestSuite2 {
}
public class TestRunner {
public static void main(String[] args) {
Result result1 = JUnitCore.runClasses(JunitTestSuite1.class);
Result result2 = JUnitCore.runClasses(JunitTestSuite2.class);
for (Failure failure : result1.getFailures()) {
System.out.println(failure.toString());
}
for (Failure failure : result2.getFailures()) {
System.out.println(failure.toString());
}
System.out.println(result1.wasSuccessful());
System.out.println(result2.wasSuccessful());
}
}