Jersey(1.19.1) - Client API, Testing services
The Jersey client API was originally developed to aid the testing of the Jersey server-side, primarily to make it easier to write functional tests in conjunction with the JUnit framework for execution and reporting. It is used extensively and there are currently over 1000 tests.
Embedded servers, Grizzly and a special in-memory server, are utilized to deploy the test-based services. Many of the Jersey samples contain tests that utilize the client API to server both for testing and examples of how to use the API. The samples utilize Grizzly or embedded Glassfish to deploy the services.
The following code snippets are presented from the single unit test HelloWorldWebAppTest
of the helloworld-webapp sample. The setUp
method, called before a test is executed, creates an instance of the Glassfish server, deploys the application, and a WebResource
instance that references the base resource:
@Override protected void setUp() throws Exception { super.setUp(); // Start Glassfish glassfish = new GlassFish(BASE_URI.getPort()); // Deploy Glassfish referencing the web.xml ScatteredWar war = new ScatteredWar( BASE_URI.getRawPath(), new File("src/main/webapp"), new File("src/main/webapp/WEB-INF/web.xml"), Collections.singleton(new File("target/classes").toURI().toURL())); glassfish.deploy(war); Client c = Client.create(); r = c.resource(BASE_URI); }
The tearDown
method, called after a test is executed, stops the Glassfish server.
@Override protected void tearDown() throws Exception { super.tearDown(); glassfish.stop(); }
The testHelloWorld
method tests that the response to a GET
request to the Web resource returns “Hello World”:
public void testHelloWorld() throws Exception { String responseMsg = r.path("helloworld").get(String.class); assertEquals("Hello World", responseMsg); }
Note the use of the path
method on the WebResource
to build from the base WebResource
.