如何从头开始运行JUnit类或测试方法

时间:2018-10-20 09:58:32

标签: java maven junit

我将JUnit测试放在不同的测试文件夹中,当我逐一运行它们时,所有的测试都是绿色的,所有测试都在特定的文件夹中通过,但是当它在范围内(一次全部)完成时,某些测试会由于失败某些数据在先前的测试执行期间被更改。因此,这是一种从头开始运行JUnit测试的方法,我已经尝试过

mvn "-Dtest=TestClass1,TestClass2" test

,但是某些测试失败。完成后的样子:

mvn "-Dtest=TestClass1" test

全部通过。或何时:

`mvn "-Dtest=TestClass2" test

全部通过。

2 个答案:

答案 0 :(得分:1)

只要TestClass1TestClass2具有相同的状态,就可能无法将它们一起运行,例如它可能是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());
   }
}