Java 如何将实例传递到实现BeforeAllCallback的类中
我想知道如何将类实例传递到BeforeAllCallback中 测试:Java 如何将实例传递到实现BeforeAllCallback的类中,java,junit5,Java,Junit5,我想知道如何将类实例传递到BeforeAllCallback中 测试: @ExtendWith(MyExtension.class) public class IntegrationSpec extends DockerComposeAbstraction { Myobject example = new Myobject("something"); @Test public void testSomething() { //Test somethin
@ExtendWith(MyExtension.class)
public class IntegrationSpec extends DockerComposeAbstraction {
Myobject example = new Myobject("something");
@Test
public void testSomething() {
//Test something
}
}
MyExtension类:
public class MyExtension implements BeforeAllCallback {
public void beforeAll(ExtensionContext context) throws Exception {
System.out.println(instanceOfMyObject.getSomething);
}
}
我可以用junit5@ExtendWith annotation实现这一点吗?首先,如果希望在
之前的方法中使用示例对象,那么它应该是一个静态字段
然后,您可以使用将示例
另存为扩展名中的字段:
公共类集成规范扩展了DockerComposeAbstraction{
静态Myobject示例=新的Myobject(“某物”);
@注册扩展
静态MyExtension MyExtension=newmyextension(示例);
@试验
公共空间{
//试验
}
}
及延长期限:
公共类MyExtension实现BeforeAllCallback{
私有对象示例;
公共MyExtension(Myobject示例){
这个例子=例子;
}
public void beforeAll(ExtensionContext上下文)引发异常{
System.out.println(例如.getSomething());
}
}
首先,如果您希望在之前的方法中使用对象,那么示例
对象应该是一个静态字段
然后,您可以使用将示例
另存为扩展名中的字段:
公共类集成规范扩展了DockerComposeAbstraction{
静态Myobject示例=新的Myobject(“某物”);
@注册扩展
静态MyExtension MyExtension=newmyextension(示例);
@试验
公共空间{
//试验
}
}
及延长期限:
公共类MyExtension实现BeforeAllCallback{
私有对象示例;
公共MyExtension(Myobject示例){
这个例子=例子;
}
public void beforeAll(ExtensionContext上下文)引发异常{
System.out.println(例如.getSomething());
}
}
ABeforeAllCallback
始终可以访问ExtensionContext
,它提供了一个可选的getTestInstance()
方法
对于BeforeAllCallback
,默认情况下将返回空的可选
,因为默认的测试实例生命周期模式是PER_METHOD
;但是,您可以通过使用@TestInstance(PER_class)
注释您的测试类来更改该默认行为。如果切换到每类生命周期模式,getTestInstance()
将返回一个包含测试实例的Optional
。ABeforeAllCallback
始终可以访问ExtensionContext
,它提供了一个Optional getTestInstance()
方法
对于BeforeAllCallback
,默认情况下将返回空的可选
,因为默认的测试实例生命周期模式是PER_METHOD
;但是,您可以通过使用@TestInstance(PER_class)
注释您的测试类来更改该默认行为。如果切换到每类生命周期模式,getTestInstance()
将返回一个包含测试实例的Optional
。是,可以使用static
字段完成。我会发布一个答案。是的,它可以通过静态
字段来完成。我会发布一个答案。