Using MicroProfile Rest Client For System Testing 📎
@Path("ping")
public class PingResource {
@GET
public String ping() {
return "Enjoy Java EE 8!";
}
}
...can be system tested (checkout: http://javaeetesting.com) with MicroProfile Rest Client by describing
the resource with an interface:
import javax.ws.rs.GET;
import javax.ws.rs.Path;
@Path("/restclient/resources/ping")
public interface PingClient {
@GET
String ping();
}
...and creating a proxy implementation with RestClientBuilder
:
import java.net.MalformedURLException;
import java.net.URI;
import org.eclipse.microprofile.rest.client.RestClientBuilder;
import static org.junit.Assert.assertNotNull;
import org.junit.Test;
public class RestClientTest {
@Test
public void init() throws MalformedURLException {
URI baseURI = URI.create("http://localhost:8080");
PingClient client = RestClientBuilder.newBuilder().
baseUri(baseURI).
build(PingClient.class);
assertNotNull(client);
String result = client.ping();
assertNotNull(result);
}
}
You will need the following dependencies to run the system test from your IDE / CLI:
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>8.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-rs-mp-client</artifactId>
<version>3.3.1</version>
<scope>test</scope>
</dependency>
</dependencies>
Project created with javaee8-essentials-archetype, the 3kB ThinWAR was built and deployed with: wad.sh in 2940ms
See you at Web, MicroProfile and Java EE Workshops at Munich Airport, Terminal 2 or Virtual Dedicated Workshops / consulting. Is Munich's airport too far? Learn from home: airhacks.io.