Skip to content

Using WireMock from plain Java and other JVM Languages#

If you're not using JUnit or neither of the WireMock rules manage its lifecycle in a suitable way you can construct and start the server directly.

The Server#

If you want to use WireMock from Java (or any other JVM language) outside of JUnit you can programmatically create, start and stop the server:

WireMockServer wireMockServer = new WireMockServer(options().port(8089)); //No-args constructor will start on port 8080, no HTTPS
wireMockServer.start();

// Sometime later

wireMockServer.stop();

For more details of the options() builder accepted by the constructor see Configuration for details.

As with stubbing and verification via the JUnit rule you can call the stubbing/verifying DSL from the server object as an alternative to calling the client.

Managing ports#

If you've changed the port number and/or you're running the server on another host, you'll need to tell the client:

WireMock.configureFor("wiremock.host", 8089);

And if you've deployed it into a servlet container under a path other than root you'll need to set that too:

WireMock.configureFor("tomcat.host", 8080, "/wiremock");

The Client#

The WireMock class provides an over-the-wire client to a WireMock server (the local one by default).

Configuring for static calls#

To configure the static client for an alternative host and port:

import static com.github.tomakehurst.wiremock.client.WireMock.*;

configureFor("wiremock.host", 8089);
stubFor(get(....));

If you've deployed the server into a servlet container under a path other than root you'll need to set that too:

WireMock.configureFor("tomcat.host", 8080, "/wiremock");

Newing up#

Instances of WireMock can also be created. This is useful if you need to talk to more than one server instance.

WireMock wireMock = new WireMock("some.host", 9090, "/wm"); // As above, 3rd param is for non-root servlet deployments
wireMock.register(get(....)); // Equivalent to stubFor()