繁体   English   中英

注册到JUnit RunListener.testRunStarted

[英]Register to JUnit RunListener.testRunStarted

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

JUnitCore jUnitCore = new JUnitCore();
jUnitCore.addListner(myListener);
jUnitCore.run(...);

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

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

我不确定这种方法是否存在。 但是,一个(hacky)解决方法是为所有具有静态初始化程序块的测试类提供公共基类。 加载哪个测试类并不重要,初始化程序将只运行一次(除非您分叉测试运行,否则每个fork将运行一次)。

public abstract class AllYourTestsAreBelongToUs{
    static{
        // initialize stuff here
    }
}

public class RealTestClass extends AllYourTestsAreBelongToUs{

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

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM