单元测试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>'