java - 如何将实例传递给实现 BeforeAllCallback 的类

标签 java junit5

我想知道如何将类实例传递到 BeforeAllCallback 中。

测试:

@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 注释来做到这一点吗?

最佳答案

首先,如果您希望在 beforeAll 方法中使用 example 对象,则该对象应该是静态字段。

然后你可以使用programatic extension registrationexample 保存为扩展程序中的字段:

public class IntegrationSpec extends DockerComposeAbstraction {

    static Myobject example = new Myobject("something");

    @RegisterExtension
    static MyExtension myExtension = new MyExtension(example);

    @Test
    public void testSomething() {
        //Test something
    }
}

以及扩展名:

public class MyExtension implements BeforeAllCallback {

    private Myobject example;

    public MyExtension(Myobject example) {
        this.example = example;
    }

    public void beforeAll(ExtensionContext context) throws Exception {
        System.out.println(example.getSomething());
    }
}

关于java - 如何将实例传递给实现 BeforeAllCallback 的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49097891/

相关文章:

java - NetBeans:Java:用于在开关中创建所有案例的快捷方式

spring-boot - 如何为 lambda 表达式编写 junits

java - 展平静态成员类中的 JUnit 测试

java - 类级别的 JUnit5 参数化测试

Java调用方法使用||

java - CreationException : Unable to create injector error in Play 2. 5.18 使用 com.google.inject.AbstractModule 替换 GlobalSettings Java 代码

java - 使用Autowire获取spring xml中配置的sftpChannel

java - 没有控制反转的 JUnit

java - 托马克赫斯特线模。尝试连接到 8080。连接被拒绝

java - 使用 ThreadPoolExecutor 缩放 maxPoolSize;为什么池不会动态增加其大小?