我总是喜欢只运行一个测试类的测试。现在,我正在使用测试套件将测试方法的测试命令分成不同的类。但是,如果我想运行测试套件的单个测试,Eclipse就不会运行@ BeforeClass方法。
我有以下测试设置:
@RunWith(Suite.class)
@SuiteClasses({ Test1.class, Test2.class })
public class TestSuite {
@BeforeClass
public static void setup (){
// essential stuff for Test1#someTest
}
public static class Test1{
@Test
public void someTest(){}
}
}
当我运行someTest时,它会失败,因为TestSuite#setup没有运行。有办法解决这个问题吗?
答案 0 :(得分:4)
如果你只是执行Test1,那么JUnit不知道TestSuite,所以@BeforeClass没有被选中。您可以将@BeforeClass添加到调用TestSuite.setup()的Test1。这还需要在TestSuite中添加一个静态标志,因此它只执行一次。
@RunWith(Suite.class)
@SuiteClasses({ Test1.class, Test2.class })
public class TestSuite {
private static boolean initialized;
@BeforeClass
public static void setup (){
if(initialized)
return;
initialized = true;
System.out.println("setup");
// essential stuff for Test1#someTest
}
public static class Test1{
@BeforeClass
public static void setup (){
TestSuite.setup();
}
@Test
public void someTest(){
System.out.println("someTest");
}
}
}