Bonjour,
J'utilise JUnit 4, Glassfish 3.01, Mysql
J'ai un persistent.xml comme suit:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
  <persistence-unit name="ACS" transaction-type="JTA">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <jta-data-source>jdbc/acs</jta-data-source>
    <exclude-unlisted-classes>false</exclude-unlisted-classes>
    <properties>
      <property name="eclipselink.ddl-generation" value="drop-and-create-tables"/>
    </properties>
  </persistence-unit>
</persistence>
J'ai donc déclarer dans mon glassfish de prod les liens jdbc qui vont bien et
ça fonctionne bien.
Mais comme tout bon développeur je cherche à faire des tests unitaires pour me permettre de valider plus facilement certaine partie de code.
Je me suis donc mis à créer des tests qui vérifient mes EJBs. Pour cela j'utilise le glassfish-embedded-all.

mon test unitaire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
{
        EJBContainer ejbC = EJBContainer.createEJBContainer();
 
        Context ctx = ejbC.getContext();
..
}
déclenche une exception :

Caused by: javax.naming.NamingException: Lookup failed for 'jdbc/acs' in SerialContext [Root exception is javax.naming.NameNotFoundException: acs not found]
at javax.ejb.embeddable.EJBContainer.createEJBContainer(EJBContainer.java:102)
at javax.ejb.embeddable.EJBContainer.createEJBContainer(EJBContainer.java:78)
at com.agileacs.rpcmethod.invoke.InformInvokeTest.testInvoke(InformInvokeTest.java:68 at org.glassfish.persistence.jpa.PersistenceUnitInfoImpl.<init>(PersistenceUnitInfoImpl.java:111)


Je me pose donc la question de savoir comment déclarer le système pour que je puisse tester unitairement les accès à la bdd l'idéal pour moi serait d'avoir une instance de base pour la prod et une instance de base pour le test.
QQ a t il une idée ou un exemple ?