簡體   English   中英

接縫和休眠(JPA)問題測試

[英]Problem test with seam and hibernate (JPA)

我在使用Seam和Hibernate(帶有Jboss 5.1服務器)的應用程序上工作。

我的月食中有4個項目(Portail,Portail-ear,Portail-ejb和Portail-test)。 當我啟動應用程序時,一切正常(我可以進入localhost:8080)。

但是,當我想在測試項目中實現一些測試時,就會遇到問題。 這是用戶創建測試的代碼:

public class UserTest extends SeamTest {  

 @PersistenceContext
 IdentityManager identityManager;

 @PersistenceContext
 private EntityManager entityManager;

 @Test  
 public void testUserCreate() throws Exception {  
         new ComponentTest() {  
             @Override  
             protected void testComponents() throws Exception {

  Log log = Logging.getLog(UserTest.class);
  Log testLog = Logging.getLog(Log.class);

                (UserAction)Component.getInstance("userAction", true);
  setField(ua, "entityManager", entityManager);
  setField(ua, "identityManager", identityManager);
  setField(ua, "log", testLog);
  ua.setCreation(true);
  ua.setConfirm("toto");
  Portailrole portailrole = null;
  try{
      log.info("/****** CHERCHE ROLE ******/");
      if (entityManager == null)
      log.info("entityManager is null");
      Query query = entityManager.createQuery("from Portailrole where name=:rolename").setParameter("rolename", "Admin");
                    portailrole = (Portailrole) query.getSingleResult();
      log.info("/****** FIN CHERCHE ROLE ******/");
  } 
  catch (Exception e) {
           log.info("Exception portailrole {0} {1}", e.getClass(), e.getMessage());
  }
  log.info("testUserCreate : {0}", "role trouvé?");
  Set<Portailrole> portailroles = new HashSet<Portailrole>();
  if (portailrole != null) { 
   log.info("testUserCreate : {0}", portailrole.getName());
   portailroles.add(portailrole);
  }

  Portailuser testUser = new Portailuser(new Long(99999999),"nom","prenom","0123455689","0123455689", "0123455689","toto@toto.fr","login", "toto","FFEFAA", true, portailroles);
  log.info("testUserCreate : {0}", "user créé");
  ua.setUser(testUser);
  if ("failure".equals(ua.save())) {
            log.info("testUserCreate : {0}", "echec du save");
   assert false;
  }
  log.info("testUserCreate : {0}", "user sauvé");
         }.run();  
     }   

而我的entityManager為null。 我認為@PersistenceContext注釋在我的情況下不起作用,但我不明白為什么。

我的休眠配置位於META-INF / persistence.xml中的EJB項目中

有人有辦法幫助我嗎?

謝謝。

使用Component.getInstance()檢索ComponentTest.testComponents()方法內的EntityManager,而不是嘗試注入它:

EntityManager em = (EntityManager) Component.getInstance("entityManager");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM