mercredi 21 janvier 2015

Injected service doesn't know persisted entity

I am trying to implement a litte integration test using Arquillian and Wildfly 8.2.

The persisting in the test and querying after it works, but not for the injected service.


My test class:



@RunWith(Arquillian.class)
public class VoteServiceTest {
@Inject
private VoteRepository voteRepository;

@Inject
private EntityManager entityManager;

@Before
public void createEntityManager() {
entityManager.persist(user);
entityManager.persist(vote);
}

@Test
public void userHasVoted() {
Assert.assertTrue(entityManager.find(User.class, 1L) != null);
Assert.assertTrue(voteRepository.findAll().size() == 1);
}

@Deployment
public static JavaArchive createDeployment() {
return ShrinkWrap.create(JavaArchive.class).addPackages(true, "de/...")
.addAsResource("META-INF/persistence.xml", "META-INF/persistence.xml")
.addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml");
}
}


Injected repository which is missing the entity:



public class VoteRepository implements Serializable {
@Inject
protected EntityManager entityManager;

public List<Vote> findAll() {
return entityManager.createNamedQuery("Vote.findAll").getResultList();
}


persistence.xml:



<persistence ...>
<persistence-unit name="test" transaction-type="RESOURCE_LOCAL">
<class>de....Vote</class>
<class>de....User</class>
<properties>
<property name="hibernate.hbm2ddl.auto" value="create"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
<property name="hibernate.connection.driver_class" value="org.hsqldb.jdbcDriver"/>
<property name="hibernate.connection.url" value="jdbc:hsqldb:mem:test"/>
<property name="hibernate.show_sql" value="true"/>
</properties>
</persistence-unit>
</persistence>


What did I miss?


Aucun commentaire:

Enregistrer un commentaire