在Eclipse中的测试套件中运行单个测试

时间:2014-02-23 16:36:18

标签: 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 (){
  // essential stuff for Test1#someTest
  }

  public static class Test1{
    @Test
    public void someTest(){}
    }
}

当我运行someTest时,它会失败,因为TestSuite#setup没有运行。有办法解决这个问题吗?

1 个答案:

答案 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");
        }
    }
}