Java 注册到JUnit RunListener.testRunStarted
每当我的测试开始运行时,我想运行一次性设置逻辑。 我有多个测试类,我希望这个逻辑在所有测试类执行之前只运行一次。 我看到有一个RunListener.testRunStarted方法,但为了注册该通知,我需要成为实例化JUnitCore的方法: 但是,我无法控制测试的运行方式,因为它们可能通过IntelliJ运行,然后IntelliJ正在实例化JUnitCoreJava 注册到JUnit RunListener.testRunStarted,java,junit,Java,Junit,每当我的测试开始运行时,我想运行一次性设置逻辑。 我有多个测试类,我希望这个逻辑在所有测试类执行之前只运行一次。 我看到有一个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(){}
}