2015-01-21 12 views
2

Arquillian 및 Wildfly 8.2를 사용하여 litte 통합 테스트를 구현하려고합니다.
엔티티 관리자를 통한 지속 및 찾기가 작동하지만 쿼리를 사용하면 아무 것도 찾을 수 없습니다. 어떤 종류의 쿼리가 지속 된 엔티티를 찾지 못합니다

내 테스트 클래스 :

@RunWith(Arquillian.class) 
public class VoteServiceTest {  
    @Inject 
    private EntityManager entityManager; 

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

    @Test 
    public void justATest() { 
    Assert.assertTrue(entityManager.find(User.class, 1L) != null); // Works 
    Assert.assertTrue(entityManager.find(Vote.class, 4L) != null); // Works 
    Assert.assertTrue(entityManager.createQuery("SELECT c FROM Vote c", Vote.class).getResultList() == 1); // Fails 
    } 

    @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"); 
    } 
} 

의 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> 

나는 무엇을 그리워 했습니까?

+0

"엔티티가 누락되었습니다."를 정의하십시오. 정확히 어떤 일이 일어날까요? –

+0

'voteRepository.findAll()'은 1 개의 항목을 포함하는 목록을 반환해야하지만 그것은 비어 있습니다. – CSchulz

답변

2

대답은 간단합니다. 트랜잭션을 사용하는 것을 잊어 버렸습니다. 코드를 변경 한 후 내 쿼리에서 예상했던 엔티티를 반환했습니다.

@PersistenceContext 
    protected EntityManager em; 

    @Inject 
    protected UserTransaction utx; 

    @Before 
    public void preparePersistenceTest() 
     throws Exception { 

    utx.begin(); 
    em.joinTransaction(); 
    em.persist(user); 
    em.persist(vote); 
    utx.commit(); 
    // reset the persistence context (cache) 
    em.clear(); 
    }