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,8 +3,8 @@ package net.ziemers.swxercise.db.dao;
3 import java.util.Collection; 3 import java.util.Collection;
4 4
5 import javax.ejb.Stateless; 5 import javax.ejb.Stateless;
  6 +import javax.inject.Inject;
6 import javax.persistence.EntityManager; 7 import javax.persistence.EntityManager;
7 -import javax.persistence.PersistenceContext;  
8 import javax.persistence.TypedQuery; 8 import javax.persistence.TypedQuery;
9 import javax.persistence.criteria.CriteriaBuilder; 9 import javax.persistence.criteria.CriteriaBuilder;
10 import javax.persistence.criteria.CriteriaQuery; 10 import javax.persistence.criteria.CriteriaQuery;
@@ -19,7 +19,11 @@ import net.ziemers.swxercise.db.BaseEntity; @@ -19,7 +19,11 @@ import net.ziemers.swxercise.db.BaseEntity;
19 @Stateless 19 @Stateless
20 public class GenericDao { 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 protected EntityManager entityManager; 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,6 +27,7 @@ import org.dbunit.ext.mysql.MySqlDataTypeFactory;
27 import org.dbunit.ext.mysql.MySqlMetadataHandler; 27 import org.dbunit.ext.mysql.MySqlMetadataHandler;
28 import org.dbunit.operation.DatabaseOperation; 28 import org.dbunit.operation.DatabaseOperation;
29 import org.hibernate.internal.SessionImpl; 29 import org.hibernate.internal.SessionImpl;
  30 +import org.jglue.cdiunit.ProducesAlternative;
30 import org.slf4j.Logger; 31 import org.slf4j.Logger;
31 import org.slf4j.LoggerFactory; 32 import org.slf4j.LoggerFactory;
32 33
@@ -54,6 +55,7 @@ public class JpaTestUtils { @@ -54,6 +55,7 @@ public class JpaTestUtils {
54 * @return EntityManager der erzeugt wurde 55 * @return EntityManager der erzeugt wurde
55 */ 56 */
56 @Produces 57 @Produces
  58 + @ProducesAlternative
57 public EntityManager getEm() { 59 public EntityManager getEm() {
58 if (emf == null) { 60 if (emf == null) {
59 synchronized (EntityManagerFactory.class) { 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,7 +46,7 @@ public class UserServiceTest extends JpaTestUtils {
46 .withUsername("tziemer") 46 .withUsername("tziemer")
47 .withPassword("secret"); 47 .withPassword("secret");
48 48
49 - //underTest.createUser(dto); 49 + underTest.createUser(dto);
50 50
51 txCommit(); 51 txCommit();
52 } 52 }