Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.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 以非静态方式创建JUnit TestSuite_Java_Spring_Junit - Fatal编程技术网

Java 以非静态方式创建JUnit TestSuite

Java 以非静态方式创建JUnit TestSuite,java,spring,junit,Java,Spring,Junit,我正在寻找一种以非静态方式创建并运行JUnit测试套件的方法 目前我正在做这样的事情: public class MyTestSuite { public static TestSuite suite() { TestSuite suite = new TestSuite(); suite.addTest(...); suite.addTest(...); // .... return suite;

我正在寻找一种以非静态方式创建并运行JUnit测试套件的方法

目前我正在做这样的事情:

public class MyTestSuite {
    public static TestSuite suite() {
        TestSuite suite = new TestSuite();
        suite.addTest(...);
        suite.addTest(...);
        // ....
        return suite;
    }
}
我这样做是因为我正在创建以编程方式添加到套件中的测试用例。 使用这个解决方案,我面临的问题是我的类MyTestSuite从未被实例化。我想用弹簧容器连接,例如使用

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={...})
@Transactional
但是我看不出有什么办法可以告诉SpringJUnit4ClassRunner它也应该执行我的编程测试

谢谢你的帮助!
Erik

您可以尝试将MyTestSuite作为spring上下文(测试上下文)的一部分,并在其上启动一个init方法,该方法将添加编程测试。这将允许您注入MyTestSuite,它在spring实例化时添加了此程序测试


希望有帮助。

为什么要使用套件?将您的测试放在它们自己的子目录中,并有一个只运行在那里找到的测试的ant(或您正在使用的任何构建工具)目标似乎更简单。

对于JUnit3风格的
套件
方法,JUnit不创建类的实例;它调用该方法并对返回的对象调用
run(TestResult)

SpringJUnit4ClassRunner
是一个JUnit4 Runner类,因此它不能用于影响JUnit3风格测试套件的行为。Spring不提供JUnit4风格的套件实现。如果希望每个测试用例都使用
SpringJUnit4ClassRunner
,最好的选择是将它们升级到JUnit4

如果您询问如何将Spring测试添加到
MyTestSuite

public class MyTestSuite {
    public static Test suite() {
        TestSuite suite = new TestSuite();
        suite.addTest(...);
        suite.addTest(...);
        suite.addTest(new JUnit4TestAdapter(ExampleSpringTest.class));
        // ....
        return suite;
    }
}

这似乎是个更好的主意+1+1同上。我也希望这样做