Java 在Eclipse中的测试套件中运行单个测试
我总是喜欢只运行一个测试类的一个测试。现在,我使用测试套件将测试方法的测试排序到单独的类中。但是,如果我想运行测试套件的单个测试,Eclipse不会运行@BeforeClass方法 我有以下测试设置:Java 在Eclipse中的测试套件中运行单个测试,java,eclipse,unit-testing,junit4,test-suite,Java,Eclipse,Unit Testing,Junit4,Test Suite,我总是喜欢只运行一个测试类的一个测试。现在,我使用测试套件将测试方法的测试排序到单独的类中。但是,如果我想运行测试套件的单个测试,Eclipse不会运行@BeforeClass方法 我有以下测试设置: @RunWith(Suite.class) @SuiteClasses({ Test1.class, Test2.class }) public class TestSuite { @BeforeClass public static void setup (){ // essent
@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(){}
}
}
当我运行某个测试时,它会失败,因为TestSuite安装程序没有运行。有没有办法解决这个问题?如果您只是执行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");
}
}
}
真让人扫兴,我希望有一些月食魔法能解决它!我知道这是一个老帖子。。。但为了让它发挥作用,似乎缺少了一些东西。我在套件中添加了setup方法,然后在测试类中添加了setup方法,但是它不起作用,我得到了NullPointerException。我看到在您的示例中,TestSuite中嵌套了测试类,我没有,我有不同的文件,但是调用了TestSuite.setup()方法。