Commit aa76328ae23ce1d8f6295d463ca68565299d0351

Authored by Thomas Ziemer
1 parent 01616222

test: Alternativer EntityManagerProducer im CDI-Kontext

src/main/java/net/ziemers/swxercise/db/dao/EntityManagerProducer.java 0 → 100644
  1 +package net.ziemers.swxercise.db.dao;
  2 +
  3 +import javax.enterprise.inject.Produces;
  4 +import javax.persistence.EntityManager;
  5 +import javax.persistence.PersistenceContext;
  6 +
  7 +/**
  8 + * Der Producer stellt einen Entity Manager zur Verfügung, sofern die Anwendung im JEE-Container
  9 + * des WildFly Servers läuft. Läuft sie im Testkontext in ihrem Weld-Server, funktioniert dies
  10 + * naturgegeben nicht, und es wird der alternative Producer verwendet, der sich in der Klasse
  11 + * "JpaTestUtils" im Paket "test.java.net.ziemers.swxercise.db.utils befindet".
  12 + */
  13 +public class EntityManagerProducer {
  14 +
  15 + @Produces
  16 + @PersistenceContext
  17 + private EntityManager entityManager;
  18 +
  19 +}
... ...
src/main/java/net/ziemers/swxercise/db/dao/GenericDao.java
... ... @@ -3,8 +3,8 @@ package net.ziemers.swxercise.db.dao;
3 3 import java.util.Collection;
4 4  
5 5 import javax.ejb.Stateless;
  6 +import javax.inject.Inject;
6 7 import javax.persistence.EntityManager;
7   -import javax.persistence.PersistenceContext;
8 8 import javax.persistence.TypedQuery;
9 9 import javax.persistence.criteria.CriteriaBuilder;
10 10 import javax.persistence.criteria.CriteriaQuery;
... ... @@ -19,7 +19,11 @@ import net.ziemers.swxercise.db.BaseEntity;
19 19 @Stateless
20 20 public class GenericDao {
21 21  
22   - @PersistenceContext
  22 + /*
  23 + * Der Entity Manager wird per CDI injiziert, damit er auch im Testkontext mit dem CDI-Runner funktioniert.
  24 + * Im JEE-Container "zieht" dann die Produktion des Entity Managers in der Klasse "EntityMangerProducer".
  25 + */
  26 + @Inject
23 27 protected EntityManager entityManager;
24 28  
25 29 /**
... ...
src/test/java/net/ziemers/swxercise/db/utils/JpaTestUtils.java
... ... @@ -27,6 +27,7 @@ import org.dbunit.ext.mysql.MySqlDataTypeFactory;
27 27 import org.dbunit.ext.mysql.MySqlMetadataHandler;
28 28 import org.dbunit.operation.DatabaseOperation;
29 29 import org.hibernate.internal.SessionImpl;
  30 +import org.jglue.cdiunit.ProducesAlternative;
30 31 import org.slf4j.Logger;
31 32 import org.slf4j.LoggerFactory;
32 33  
... ... @@ -54,6 +55,7 @@ public class JpaTestUtils {
54 55 * @return EntityManager der erzeugt wurde
55 56 */
56 57 @Produces
  58 + @ProducesAlternative
57 59 public EntityManager getEm() {
58 60 if (emf == null) {
59 61 synchronized (EntityManagerFactory.class) {
... ...
src/test/java/net/ziemers/swxercise/lg/user/service/UserServiceTest.java
... ... @@ -46,7 +46,7 @@ public class UserServiceTest extends JpaTestUtils {
46 46 .withUsername("tziemer")
47 47 .withPassword("secret");
48 48  
49   - //underTest.createUser(dto);
  49 + underTest.createUser(dto);
50 50  
51 51 txCommit();
52 52 }
... ...