Skip to content

Instantly share code, notes, and snippets.

@zpapez
Created November 23, 2020 10:24
Show Gist options
  • Save zpapez/062483bb2d9f5a40fe9484b37166d3f2 to your computer and use it in GitHub Desktop.
Save zpapez/062483bb2d9f5a40fe9484b37166d3f2 to your computer and use it in GitHub Desktop.
JUnit5 WireMock Extension
import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.options;
import org.junit.jupiter.api.extension.AfterAllCallback;
import org.junit.jupiter.api.extension.AfterEachCallback;
import org.junit.jupiter.api.extension.ExtensionContext;
import org.junit.jupiter.api.extension.ParameterContext;
import org.junit.jupiter.api.extension.ParameterResolutionException;
import org.junit.jupiter.api.extension.ParameterResolver;
import com.github.tomakehurst.wiremock.WireMockServer;
import com.github.tomakehurst.wiremock.common.ConsoleNotifier;
public class WireMockExtension
implements AfterAllCallback, AfterEachCallback, ParameterResolver {
private WireMockServer wiremockServer;
@Override
public void afterAll(ExtensionContext context) {
wiremockServer.shutdown();
}
@Override
public void afterEach(ExtensionContext context) {
wiremockServer.resetAll();
}
@Override
public WireMockServer resolveParameter(ParameterContext parameterContext, ExtensionContext arg1) throws ParameterResolutionException {
wiremockServer = new WireMockServer(options()
.notifier(new ConsoleNotifier(true))
.dynamicPort());
wiremockServer.start();
return wiremockServer;
}
@Override
public boolean supportsParameter(ParameterContext parameterContext, ExtensionContext context) throws ParameterResolutionException {
return
parameterContext.getParameter().getType().equals(WireMockServer.class)
&& parameterContext.isAnnotated(WireMockInstance.class);
}
}
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.PARAMETER)
public @interface WireMockInstance {
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment