下面列出了org.junit.jupiter.api.extension.ExtensionContext#getRoot() 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
/** Get the compilation context.
*
* @param context the extension context.
* @return the compilation context.
*/
ResourceSetGlobalCompilationContext getOrCreateCompilationContext(ExtensionContext context) {
final ExtensionContext root = context.getRoot();
return root.getStore(NAMESPACE).getOrComputeIfAbsent(
ResourceSetGlobalCompilationExtension.CONTEXT_KEY,
it -> {
final ResourceSetGlobalCompilationContext ctx = new ResourceSetGlobalCompilationContext(
context.getRequiredTestClass().getPackage().getName() + ".tests",
this.injector, this.parseHelper, this.validator);
final GlobalCompilationTestContribution anno = context.getRequiredTestClass().getAnnotation(GlobalCompilationTestContribution.class);
if (anno != null) {
ctx.setValidationRunInEachTestFunction(anno.getValidate());
}
return ctx;
},
ResourceSetGlobalCompilationContext.class);
}
private ExtensionState ensureStarted(ExtensionContext extensionContext) {
ExtensionContext root = extensionContext.getRoot();
ExtensionContext.Store store = root.getStore(ExtensionContext.Namespace.GLOBAL);
ExtensionState state = store.get(ExtensionState.class.getName(), ExtensionState.class);
TestProfile annotation = extensionContext.getRequiredTestClass().getAnnotation(TestProfile.class);
Class<? extends QuarkusTestProfile> selectedProfile = null;
if (annotation != null) {
selectedProfile = annotation.value();
}
boolean wrongProfile = !Objects.equals(selectedProfile, quarkusTestProfile);
if ((state == null && !failedBoot) || wrongProfile) {
if (wrongProfile) {
if (state != null) {
try {
state.close();
} catch (Throwable throwable) {
throwable.printStackTrace();
}
}
}
PropertyTestUtil.setLogFileProperty();
try {
state = doJavaStart(extensionContext, selectedProfile);
store.put(ExtensionState.class.getName(), state);
} catch (Throwable e) {
failedBoot = true;
firstException = e;
}
}
return state;
}
@Override
public void postProcessTestInstance(Object testInstance, ExtensionContext context) throws Exception {
TestHTTPResourceManager.inject(testInstance);
ExtensionContext root = context.getRoot();
ExtensionContext.Store store = root.getStore(ExtensionContext.Namespace.GLOBAL);
ExtensionState state = store.get(ExtensionState.class.getName(), ExtensionState.class);
state.testResourceManager.inject(testInstance);
}
/** Remove the compilation context.
*
* @param context the extension context.
*/
void clearCompilationContext(ExtensionContext context) {
final ExtensionContext root = context.getRoot();
root.getStore(NAMESPACE).remove(ResourceSetGlobalCompilationExtension.CONTEXT_KEY);
}