gpt4 book ai didi

java - 在 JUNIT5 中的扩展之间共享存储数据

转载 作者:行者123 更新时间:2023-12-02 01:50:07 24 4
gpt4 key购买 nike

我们是否可以使用 store 在 JUNIT 5 中的不同扩展之间共享数据

示例

public class Extension1{
beforeAllCallback(){
getStore(GLOBAL).put(projectId,"112");
}
}

public class Extension2{
beforeTestExecutionCallback(){
System.out.println("projectId="+getStore(GLOBAL).get(projectId));
}
}

最佳答案

是的,两个扩展可以通过Store共享状态,如下所示。

但是请注意,如果您希望跨测试类可以访问状态,您可能希望将共享状态存储在上下文Store中。

import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.BeforeAllCallback;
import org.junit.jupiter.api.extension.BeforeTestExecutionCallback;
import org.junit.jupiter.api.extension.ExtendWith;
import org.junit.jupiter.api.extension.ExtensionContext;
import org.junit.jupiter.api.extension.ExtensionContext.Namespace;

@ExtendWith({ Extension1.class, Extension2.class })
public class Tests {

@Test
void test() {
// executing this results in the following being printed to SYS_OUT.
// PROJECT_ID=112
}
}

class Extension1 implements BeforeAllCallback {

public static final String PROJECT_ID = Extension1.class.getName() + ".PROJECT_ID";

@Override
public void beforeAll(ExtensionContext context) throws Exception {
context.getStore(Namespace.GLOBAL).put(PROJECT_ID, "112");
}
}

class Extension2 implements BeforeTestExecutionCallback {

@Override
public void beforeTestExecution(ExtensionContext context) throws Exception {
System.out.println("PROJECT_ID=" + context.getStore(Namespace.GLOBAL).get(Extension1.PROJECT_ID));
}
}

关于java - 在 JUNIT5 中的扩展之间共享存储数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53104269/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com