/jaxrs-unit

A library for unit testing of JAX-RS application

Primary LanguageJavaApache License 2.0Apache-2.0

jaxrs-unit

A library for unit testing of JAX-RS application.

Description

The goal is to write unit tests without a real JavaEE server. But tests use real JAX-RS implementation (Jersey or RestEasy) with in-memory containers.

JaxRS Unit provides an API to encapsulate the specific im-memory containers.

Build status

Build Status

Environment

  • java-1.8

Build

mvn clean verify

Usage

Maven

You have to add api dependency :

<dependency>
    <groupId>io.github.binout</groupId>
    <artifactId>jaxrs-unit-api</artifactId>
    <version>${version}</version>
    <scope>test</scope>
</dependency>

You have to choose an implementation :

  • RestEasy

<dependency>
    <groupId>io.github.binout</groupId>
    <artifactId>jaxrs-unit-resteasy</artifactId>
    <version>${version}</version>
    <scope>test</scope>
</dependency>
  • Jersey

<dependency>
    <groupId>io.github.binout</groupId>
    <artifactId>jaxrs-unit-jersey</artifactId>
    <version>${version}</version>
    <scope>test</scope>
</dependency>

Hello World

Considering a JAX-RS resource :

@Path("/hello")
public class HelloResource {
    @GET
    public String hello() {
        return "hello";
    }
}

You can write a unit test like this :

public class HelloTest {
    private JaxrsServer server;

    @Before
    public void init() {
        server = JaxrsUnit.newServer(HelloResource.class);
    }

    @Test
    public void should_return_hello() {
        JaxrsResource resource = server.resource("/hello");

        JaxrsResponse response = resource.get();

        assertThat(response.ok()).isTrue();
        assertThat(response.content()).isEqualTo("hello");
    }
}

TODO

  • resource injection