Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.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 RunListener.testRunStarted_Java_Junit - Fatal编程技术网

Java 注册到JUnit RunListener.testRunStarted

Java 注册到JUnit RunListener.testRunStarted,java,junit,Java,Junit,每当我的测试开始运行时,我想运行一次性设置逻辑。 我有多个测试类,我希望这个逻辑在所有测试类执行之前只运行一次。 我看到有一个RunListener.testRunStarted方法,但为了注册该通知,我需要成为实例化JUnitCore的方法: 但是,我无法控制测试的运行方式,因为它们可能通过IntelliJ运行,然后IntelliJ正在实例化JUnitCore 因此,我的问题是运行设置代码的最佳位置是什么?在执行所有测试类之前,设置代码应该只运行一次,而不需要运行我的测试的客户机/用户进行额外

每当我的测试开始运行时,我想运行一次性设置逻辑。 我有多个测试类,我希望这个逻辑在所有测试类执行之前只运行一次。 我看到有一个RunListener.testRunStarted方法,但为了注册该通知,我需要成为实例化JUnitCore的方法:

但是,我无法控制测试的运行方式,因为它们可能通过IntelliJ运行,然后IntelliJ正在实例化JUnitCore


因此,我的问题是运行设置代码的最佳位置是什么?在执行所有测试类之前,设置代码应该只运行一次,而不需要运行我的测试的客户机/用户进行额外配置。

我不确定这样的方法是否存在。但是一个(黑客)解决方法是为所有测试类提供一个公共基类,该基类具有静态初始值设定项块。加载哪个测试类并不重要,初始化器将只运行一次(除非您分叉测试运行,那么它将每个分叉运行一次)

JUnitCore jUnitCore = new JUnitCore();
jUnitCore.addListner(myListener);
jUnitCore.run(...);
public abstract class AllYourTestsAreBelongToUs{
    static{
        // initialize stuff here
    }
}

public class RealTestClass extends AllYourTestsAreBelongToUs{

    @Test
    public void someTest(){}
    @Test
    public void someOtherTest(){}

}