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.

 

posted on 2016-04-17 19:24  huey2672  阅读(235)  评论(0编辑  收藏  举报