Anotar la clase de pruebas con:
@RunWith(Arquillian.class)
Importar:
import org.jboss.arquillian.junit.Arquillian;
import org.junit.runner.RunWith;
Definir el método de la construcción del jar que contiene las clases que se van a probar. Este debe:
- Estar anotado por @Deployment
 - Retornar un JavaArchive
 - Incluir todos los archivos que se necesitan para las prueba.
 
Se debe importar:
import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.spec.JavaArchive;
package co.edu.uniandes.csw.nombreproyecto.persistence;
import co.edu.uniandes.csw.company.entities.XYZEntity;
import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.spec.JavaArchive;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import static org.junit.Assert.*;
import org.junit.runner.RunWith;
@RunWith(Arquillian.class)
public class XYZPersistenceTest {
 /**
     *
     * @return Devuelve el jar que Arquillian va a desplegar en el Glassfish
     * embebido. El jar contiene las clases de XYZ, el descriptor de la
     * base de datos y el archivo beans.xml para resolver la inyección de
     * dependencias.
     */
    @Deployment
    public static JavaArchive createDeployment() {
        return ShrinkWrap.create(JavaArchive.class)
                .addPackage(XYZEntity.class.getPackage())
                .addPackage(XYZPersistence.class.getPackage())
                .addAsManifestResource("META-INF/persistence.xml", "persistence.xml")
                .addAsManifestResource("META-INF/beans.xml", "beans.xml");
    }
    public XYZPersistenceTest() {
    }
    @BeforeClass
    public static void setUpClass() {
    }
    @AfterClass
    public static void tearDownClass() {
    }
    @Before
    public void setUp() {
    }
    @After
    public void tearDown() {
    }
    /**
     * Test of find method, of class XYZPersistence.
     */
    @Test
    public void testFind() throws Exception {
        fail("testFind");
    }
    /**
     * Test of findByName method, of class XYZPersistence.
     */
    @Test
    public void testFindByName() throws Exception {
        fail("testFindByName");
    }
    /**
     * Test of findAll method, of class XYZPersistence.
     */
    @Test
    public void testFindAll() throws Exception {
        fail("testFindAll");
    }
    /**
     * Test of create method, of class XYZPersistence.
     */
    @Test
    public void testCreate() throws Exception {
         fail("testCreate");
    }
    /**
     * Test of update method, of class XYZPersistence.
     */
    @Test
    public void testUpdate() throws Exception {
        fail("testUpdate");
    }
    /**
     * Test of delete method, of class XYZPersistence.
     */
    @Test
    public void testDelete() throws Exception {
         fail("testDelete");
    }
}
Declarar las variables que se requieren para las pruebas e importar los paquetes necesarios:
persistence: es el objeto de la clase que se va a probar. El contenedor inyectará una instancia de esta clase.em: un EntityManager para verificar los datos directamente sobre la base de datosutx: un UserTransactions para manipular los datos directamente sobre la base de datosdata: este arreglo contendrá el conjunto de datos de prueba
/**
     * Inyección de la dependencia a la clase XYZPersistence cuyos métodos
     * se van a probar.
     */
    @Inject
    private XYZPersistence persistence;
    /**
     * Contexto de Persistencia que se va a utilizar para acceder a la Base de
     * datos por fuera de los métodos que se están probando.
     */
    @PersistenceContext
    private EntityManager em;
    /**
     * Variable para martcar las transacciones del em anterior cuando se
     * crean/borran datos para las pruebas.
     */
    @Inject
    UserTransaction utx;
     /**
     *
     */
    private List<XYZEntity> data = new ArrayList<XYZEntity>();
Este método setUp anotado con @Before se ejecutará antes de cada prueba.
- Llama 
clearData()que Borra los datos en la base de datos directamente utilizando elEntityManagery laUserTransaction - Llama 
insertData()que Crea nuevos datos 
@Before
    public void setUp() {
        try {
            utx.begin();
            em.joinTransaction();
            clearData();
            insertData();
            utx.commit();
        } catch (Exception e) {
            e.printStackTrace();
            try {
                utx.rollback();
            } catch (Exception e1) {
                e1.printStackTrace();
            }
        }
    }
- Llama 
clearData()que Borra los datos en la base de datos directamente utilizando el EntityManager y la UserTransaction - Llama 
insertData()que Crea nuevos datos .- Los nuevos datos son creados utilizando Podam quien crea datos aleatorios.
 - Los datos que se crean son de la clase 
XYZEntity. 
 
private void clearData() {
        em.createQuery("delete from XYZEntity").executeUpdate();
    }
 private void insertData() {
        PodamFactory factory = new PodamFactoryImpl();
        for (int i = 0; i < 3; i++) {
            XYZEntity entity = factory.manufacturePojo(XYZEntity.class);
            em.persist(entity);
            data.add(entity);
        }
    }