Creating automated tests in Java and WireMock Cloud
Everything that can be done with WireMock Cloud’s web UI can also be done via its APIs. This can be useful when automating
testing, as it allows stubs to be configured and torn down on-demans by individual test cases rather than it being
necessary to configure an entire test suite’s stubs manually up-front. Working this way can make your tests a lot more
readable as it makes their preconditions expicit.WireMock Cloud’s API is 100% compatible with WireMock’s. This means that WireMock
can be used as a Java client for WireMock Cloud.
WireMock is distributed in two different types of JAR - a standard “thin” JAR, and a “fat” standalone JAR. The latter of these
contains all of WireMock’s dependencies and repackages (shades) most of these. Either can be used as a dependency in your
project and which you choose depends primarily on whether you have dependencies already present that conflict with WireMock’s.
Picking the standalone version generally avoids these problems but at the cost of a larger JAR download.If you’re using Gradle you can add WireMock to your build file’s dependencies as follows. Choose one of:
Copy
Ask AI
testImplementation 'org.wiremock:wiremock:3.12.1' // thin JARtestImplementation 'org.wiremock:wiremock-standalone:3.12.1' // standalone JAR
Or if you’re using Maven, choose one of:
Copy
Ask AI
<!-- Thin JAR --><dependency> <groupId>org.wiremock</groupId> <artifactId>wiremock</artifactId> <version>3.12.1</version> <scope>test</scope></dependency><!-- Standalone JAR --><dependency> <groupId>org.wiremock</groupId> <artifactId>wiremock-standalone</artifactId> <version>3.12.1</version> <scope>test</scope></dependency>
After you’ve created a mock API in the WireMock Cloud UI, setting up a WireMock client to it is a one-line task (you can copy-paste this from
your mock API’s Settings page):
Copy
Ask AI
// If admin API security disabledWireMock paymentGatewayMock = new WireMock("https", "payments-example.wiremockapi.cloud", 443);// If admin API security enabledWireMock paymentGatewayMock = new WireMockBuilder() .scheme("https") .host("payments-example.wiremockapi.cloud") .port(443) .authenticator(new ClientTokenAuthenticator("lksdr91283rsdjkfh981")) .build();
The same approach can be taken if you want to create stubs in your API programmatically.
This can be useful when you require a large number of stubs and don’t want to create
them all by hand.The example in the previous section creates an ephemeral stub i.e. one that isn’t
stored persistently and will be deleted when the API is reset. To ensure that stubs
created programmatically are saved, simply call persistent() during creation:
Copy
Ask AI
myMockApi.register(get(urlPathEqualTo("/persist-this")) .persistent() .willReturn(ok("Some body content")));