Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Eclipse中的测试套件中运行单个测试_Java_Eclipse_Unit Testing_Junit4_Test Suite - Fatal编程技术网

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

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

我总是喜欢只运行一个测试类的一个测试。现在,我使用测试套件将测试方法的测试排序到单独的类中。但是,如果我想运行测试套件的单个测试,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(){}
    }
}

当我运行某个测试时,它会失败,因为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()方法。