
org.testcontainers.junit.jupiter.TestcontainersExtension Maven / Gradle / Ivy
// Generated by delombok at Tue Dec 18 16:20:58 UTC 2018
package org.testcontainers.junit.jupiter;
import org.junit.jupiter.api.extension.BeforeEachCallback;
import org.junit.jupiter.api.extension.ExtensionConfigurationException;
import org.junit.jupiter.api.extension.ExtensionContext;
import org.junit.jupiter.api.extension.ExtensionContext.Namespace;
import org.junit.jupiter.api.extension.ExtensionContext.Store.CloseableResource;
import org.junit.jupiter.api.extension.TestInstancePostProcessor;
import org.junit.platform.commons.support.AnnotationSupport;
import org.junit.platform.commons.util.Preconditions;
import org.junit.platform.commons.util.ReflectionUtils;
import org.testcontainers.lifecycle.Startable;
import java.lang.reflect.Field;
import java.util.LinkedHashSet;
import java.util.Optional;
import java.util.Set;
import java.util.function.Predicate;
import java.util.stream.Stream;
class TestcontainersExtension implements TestInstancePostProcessor, BeforeEachCallback {
private static final Namespace NAMESPACE = Namespace.create(TestcontainersExtension.class);
private static final String TEST_INSTANCE = "testInstance";
@Override
public void postProcessTestInstance(final Object testInstance, final ExtensionContext context) {
ExtensionContext.Store store = context.getStore(NAMESPACE);
store.put(TEST_INSTANCE, testInstance);
findSharedContainers(testInstance).forEach(adapter -> store.getOrComputeIfAbsent(adapter.getKey(), k -> adapter.start()));
}
@Override
public void beforeEach(final ExtensionContext context) {
collectParentTestInstances(context).parallelStream().flatMap(this::findRestartContainers).forEach(adapter -> context.getStore(NAMESPACE).getOrComputeIfAbsent(adapter.getKey(), k -> adapter.start()));
}
private Set
© 2015 - 2025 Weber Informatics LLC | Privacy Policy