Unité de Test JPA/Hibernate : Pas de fournisseur de Persistance pour l'EntityManager
Je veux activer l'Unité de Test pour mon projet. J'ai créé la structure comme suit.
Structure De Répertoire
.
├── 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
CODE
persistence.xml
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="test" transaction-type="RESOURCE_LOCAL">
<description>TEST Persistence Unit</description>
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<properties>
<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" />
<property name="hibernate.connection.url" value="jdbc:mysql://XXX:3306/X" />
<property name="hibernate.connection.username" value="X" />
<property name="hibernate.connection.password" value="X" />
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="true" />
<property name="hibernate.transaction.flush_before_completion" value="true" />
</properties>
</persistence-unit>
</persistence>
TestEntityManagerUtil.java
public class TestEntityManagerUtil {
public static EntityManagerFactory getEntityManagerFactory(){
return Persistence.createEntityManagerFactory("test");
}
}
TestHibernate.java
public class TestHibernate {
private EntityManager em;
@Before
public void beforeEach(){
//Exception occurs here
em = TestEntityManagerUtil.getEntityManagerFactory().createEntityManager();
}
@After
....
@Test
....
}
Exception
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)
Le test persistence.xml est explosé dans target/test-clases
répertoire qu'il est.
Quelqu'un peut m'aider ce que je ferais de mal.
Vous n'avez pas d'inclure votre serveur d'application des pots correctement. Je peux vous dire, les étapes à suivre si vous utilisez GlassFish, êtes-vous?
Après un deuxième coup d'oeil, vous n'êtes pas le développement d'une EE de l'application. Donc je prends ma suggestion précédente retour.
Après un deuxième coup d'oeil, vous n'êtes pas le développement d'une EE de l'application. Donc je prends ma suggestion précédente retour.
OriginalL'auteur Talha Ahmed Khan | 2012-11-20
Vous devez vous connecter pour publier un commentaire.
Veuillez consulter votre implémentation JPA bibliothèque (Hibernate) dépendances dans votre POM Maven.
Sinon, ajouter hibernate-entityManager.jar dans un non projet Maven
Edit:
Être conscient que le JBoss exemple que vous utilisez est un EE de l'application qui utilise CDI injection pour obtenir un EntityManager. Un grand malentendu est à supposer que JUnit tests sont opérationnels dans EE d'applications.... Non, JUnit tests peut ni courir le conteneur JBoss, ni déployer votre projet. Pourtant, vous pouvez vous référer à http://arquillian.org/invasion/ et remarquez également JBoss exemple pour un test arquillian
En d'autres termes, votre JUnit est la SE de moyen de tester un EntityManager et dans pas opérationnel dans un serveur d'application comme JBoss.
hibernate-core
,hibernate-validator
ethibernate-jpa-api
.Veuillez vérifier mes édité réponse il peut faire sens pour vous!
Oui, a eu l'idée de vous et déjà se référant
arquillian
, Merci.OriginalL'auteur Sym-Sym