Tomie를 Intellij와 함께 사용하여 EJB/JPA Bean을 테스트하고 있습니다. 나는 묻힌 콘테이너를 시험해야한다 this answer에 보았다. 나는 같은 질문에서 this other answer에 Arquillian을 발견했지만 코멘트에 명시된 바와 같이, 그것을 설정하고 사용자 친화적이지 않고, 나 같은 초보자가 검색합니다.TomEE로 EJB를 테스트하는 방법은 무엇입니까?
불행히도 glassfish-embedded-all
의존성을 사용하고 있지는 않지만 tomee-embedded
을 사용하고 있습니다. 나는 이걸보고 official tutorial 위의 대답뿐만 아니라 JTA를 사용해야합니다. 하지만 왜?
No EJBContainer provider available: no provider names had been found.
다음이
answer에서
@BeforeClass
방법에서 코드 조각을 사용하여. 내 테스트는 다음과 같습니다 :
Properties properties = new Properties();
properties.setProperty(EJBContainer.PROVIDER, "tomee-embedded");
EJBContainer container = EJBContainer.createEJBContainer(properties);
AccountDao dao = (AccountDao) container.getContext().lookup("java:global/Test/AccountDao");
Test
내 응용 프로그램 이름이고 AccountDao
내가 테스트를 원하는 내 Stateless Bean
입니다. 하지만 지금은이 오류를 받고 있어요 :
Caused by: org.hsqldb.HsqlException: user lacks privilege or object not found: PG_CLASS
내가 HSQLDB
를 사용하지 않는 있지만, 나는이 오류가 있어요. Hibernate entityManager
을 정확하게 인스턴스화하기 위해 postgresql 속성을 올바르게 추가하려면 어떻게해야합니까? 단위 테스트에 대한 TomEE 포함 된 컨테이너를 사용와
<persistence-unit name="unitName">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<class>entity.PersistentEntity.Account</class>
<properties>
<property name="tomee.jpa.factory.lazy" value="true"/>
<property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver"/>
<property name="javax.persistence.jdbc.url" value="jdbc:postgresql://localhost/click10"/>
<property name="javax.persistence.jdbc.user" value="postgres"/>
<property name="javax.persistence.jdbc.password" value="postgres"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQL82Dialect"/>
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>
<property name="hibernate.hbm2ddl.auto" value="update"/>
</properties>
</persistence-unit>