繁体   English   中英

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

[英]sharing store data between extensions in JUNIT5

无论如何,我们可以使用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));
    }
}

暂无
暂无

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

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