Je suis en train d'utiliser DeltaSpike test-Control Module pour créer des tests d'intégration pour une nouvelle application maven que je développeDeltaSpike Test-contrôle - Unité persistance Introuvable
Il est déployé sur un wildfly 9 instance
un exemple simple de test:
@RunWith(CdiTestRunner.class)
@TestControl(projectStage = ProjectStage.IntegrationTest.class)
public class EmpresaCrudIntegrationTestCase {
private static final String NOME_NOVA_EMPRESA = "teste";
@Inject private EmpresaService empresaService;
@Test
public void test() {
Empresa empresa = empresaService.save(new Empresa(NOME_NOVA_EMPRESA));
Assert.assertNotNull(empresa.getId());
Assert.assertEquals(NOME_NOVA_EMPRESA, empresa.getNome());
Assert.assertTrue(empresa.getAtivo());
}
}
J'ai un persistence.xml
situé à l'intérieur src/test/resources/META-INF
qui ressemble à ceci:
<persistence version="2.0"
xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="medipop" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<non-jta-data-source>java:jboss/datasources/medipop-test</non-jta-data-source>
<properties>
<property name="hibernate.hbm2ddl.auto" value="update" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />
</properties>
</persistence-unit>
</persistence>
Le directeur de l'entité est exposée par une méthode de production de CDI:
@PersistenceUnit
private EntityManagerFactory entityManagerFactory;
@Produces
@RequestScoped
public EntityManager create() {
return this.entityManagerFactory.createEntityManager();
}
Le problème est que la EntityManagerFactory
reste nulle lors de la création du EntityManager
Toute aide est la bienvenue.
La seule chose qui ressort est que vous faites référence à une source de données. DS Test Control ne fonctionne pas sur le serveur complet de l'application comme le fait Arquillian, il s'exécute dans un environnement d'exécution CDI pur. Il n'y a pas de source de données disponible. Vous devez remplacer votre fabrique de gestionnaire d'entités pour la charger dans une base de données dédiée. Cette section peut vous donner quelques conseils: http://deltaspike.apache.org/documentation/jpa.html#MultipleEntityManagers –