我确实遇到了与JPA持久性单元测试有关的问题。
当我运行JUnit测试时,我为EntityManager命名异常提供了一个No Persistence提供程序。我遵循这篇文章No Persistence provider for EntityManager named 中的建议,但似乎没有任何效果。
我从JBOSS Application Server运行我的单元测试。
我用这段代码获取我的EntityManager
final String PERSISTENCE_UNIT_TEST = "RFIDPeopleProtoPersistenceTest";
public PersonDAOTest( ) throws Exception{
try{
this.personDAO = new PersonDAO( );
EntityManagerFactory factory = Persistence.createEntityManagerFactory( PERSISTENCE_UNIT_TEST );
EntityManager em = factory.createEntityManager();
dao.setEntityManager( em );
}catch( Exception e ){
...
}
}
我在maven项目中使用了hibernate-entitymanger.jar(pom.xml)
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>4.2.18.Final-redhat-2</version>
<scope>test</scope>
</dependency>
我的测试中有持久性规范文件(test-persistence.xml)
<persistence-unit name="RFIDPeopleProtoPersistenceTest" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>java:jboss/datasources/rfidpeopleProtoTestDS</jta-data-source>
<class>org.rfidpeople.prototype.model.AbstractContactInfo</class>
<properties>
<property name="connection.driver_class" value="net.sourceforge.jtds.jdbc.Driver" />
<property name="connection.url" value="jdbc:jtds:sqlserver://localhost:1433/RFIDPeople" />
<property name="connection.username" value="sa" />
<property name="connection.password" value="sa1234" />
<property name="dialect" value="org.hibernate.dialect.SQLServerDialect" />
<property name="hibernate.hbm2ddl.auto" value="create-drop" />
<property name="hibernate.show_sql" value="false" />
</properties>
我的日食JBOSS开发者工作室中有这个文件系统
我目前没有找到问题的解决方案。
我会感谢你的帮助。