单元测试JPA/Hibernate:EntityManager没有持久性提供程序
我想为我的项目启用单元测试。我创建了如下结构 目录结构单元测试JPA/Hibernate:EntityManager没有持久性提供程序,hibernate,jpa-2.0,java-ee-6,Hibernate,Jpa 2.0,Java Ee 6,我想为我的项目启用单元测试。我创建了如下结构 目录结构 . ├── pom.xml ├── src │ ├── main │ │ ├── java │ │ └── resources │ │ ├── META-INF │ │ │ ├── beans.xml <-- Works fine in live │ │ │ └── persistence.xml <-- Works fine in li
.
├── pom.xml
├── src
│ ├── main
│ │ ├── java
│ │ └── resources
│ │ ├── META-INF
│ │ │ ├── beans.xml <-- Works fine in live
│ │ │ └── persistence.xml <-- Works fine in live
│ └── test
│ ├── java
│ │ ├── com
│ │ │ └── test
│ │ │ └── model
│ │ │ ├── TestEntityManagerUtil.java
│ │ │ └── TestHibernate.java
│ └── resources
│ ├── META-INF
│ │ ├── beans.xml
│ │ └── persistence.xml
TestHibernate.java
public class TestEntityManagerUtil {
public static EntityManagerFactory getEntityManagerFactory(){
return Persistence.createEntityManagerFactory("test");
}
}
public class TestHibernate {
private EntityManager em;
@Before
public void beforeEach(){
// Exception occurs here
em = TestEntityManagerUtil.getEntityManagerFactory().createEntityManager();
}
@After
....
@Test
....
}
例外情况
javax.persistence.PersistenceException: No Persistence provider for EntityManager named test
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:69)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:47)
at com.wellclub.model.TestEntityManagerUtil.getEntityManagerFactory(TestEntityManagerUtil.java:12)
at com.wellclub.model.TestHibernate.beforeEach(TestHibernate.java:24)
test persistence.xml按原样在target/test clases
目录中分解
有谁能帮我指出我做错了什么。请查看Maven POM中的JPA实现库(Hibernate)依赖项
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>${hibernate-core-version}</version>
</dependency>'
org.hibernate
还有注意
换句话说,JUnit是测试EntityManager的SE方法,它在JBoss这样的应用服务器中不起作用。您没有正确地包括应用服务器JAR。如果您使用GlassFish,我可以告诉您要遵循的步骤,是吗?再看一眼,您就不是在开发EE应用程序了。所以我收回了我之前的建议,我的结构与中使用的结构相同。我在构建中没有EntityManager,但是有hibernate core
,hibernate validator
和hibernate jpa api
。是的,从您那里得到了线索,并且已经参考了arquillian
,谢谢。
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>${hibernate-core-version}</version>
</dependency>'