rulz

Reusable JUnit Rules

See Rulz in action: "Effective Java EE" online workshop, episode 5 and in the "Java EE Testing and Quality Workshop"

JPA EntityManager provider

Installation

    <dependency>
        <groupId>com.airhacks.rulz</groupId>
        <artifactId>em</artifactId>
        <version>[RECENT_VERSION]</version>
        <scope>test</scope>
    </dependency>

Sample use

import com.airhacks.rulz.em.*;
import javax.persistence.EntityManager;
import javax.persistence.EntityTransaction;
import static org.junit.Assert.assertNotNull;
import org.junit.Rule;
import org.junit.Test;

public class WorkshopTest {

    @Rule
    public EntityManagerProvider emProvider = EntityManagerProvider.persistenceUnit("it");

    @Test
    public void crud() {
        EntityManager em = emProvider.em();
        assertNotNull(em);
        EntityTransaction tx = emProvider.tx();
        assertNotNull(tx);
        tx.begin();
        em.merge(new Workshop("html5", "html5 for javaee developers"));
        tx.commit();
    }
}

JAX-RS 2.0 Client provider

Installation

        <dependency>
            <groupId>com.airhacks.rulz</groupId>
            <artifactId>jaxrsclient</artifactId>
            <version>[RECENT_VERSION]</version>
            <scope>test</scope>
        </dependency>

Sample use

import static com.airhacks.rulz.jaxrsclient.HttpMatchers.successful;
import javax.ws.rs.client.Client;
import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertThat;
import org.junit.Rule;
import org.junit.Test;

public class JAXRSClientProviderTest {

    @Rule
    public JAXRSClientProvider provider = JAXRSClientProvider.buildWithURI("http://www.java.com");

    @Test
    public void pingJava() {
        Client client = provider.client();
        assertNotNull(client);
        WebTarget target = provider.target();
        assertNotNull(target);
        Response response = target.request(MediaType.TEXT_HTML).get();
        assertThat(response.getStatus(), is(200));
    }

    @Test
    public void pingJavaAndVerifyWithMatcher() {
        //(...)
        Response response = target.request(MediaType.TEXT_HTML).get();
        assertThat(response, is(successful()));
    }
}

JAX-RS client rules are tested with statustest