IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JPA Java Discussion :

Test unitaire et JEE6 (EJB3.1)


Sujet :

JPA Java

  1. #1
    Membre régulier
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Février 2008
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2008
    Messages : 49
    Points : 88
    Points
    88
    Par défaut Test unitaire et JEE6 (EJB3.1)
    Bonjour,

    Commençant l'apprentissage de JEE6, j'aimerais pouvoir faire des tests unitaires avec les EJB3.1. Pour JEE5, cela j'utilisais maven / junit / openejb / derby.
    Mais voilà, il y a openejb qui n'a que faire de :
    <dependency>
    <groupId>javax</groupId>
    <artifactId>javaee-api</artifactId>
    <version>6.0</version>
    <scope>provided</scope>
    </dependency>

    il veut du
    <dependency>
    <groupId>org.apache.openejb</groupId>
    <artifactId>javaee-api</artifactId>
    <version>5.0-3</version>
    <scope>provided</scope>
    </dependency>


    Sinon on a un beau :
    OpenEJB encountered an unexpected error while attempting to instantiate the assembler.: Absent Code attribute in method that is not native or abstract in class file javax/resource/spi/ResourceAdapterInternalException

    Donc pas possible de faire des ejb 3.1 dans ces conditions.
    J'ai vu qu'il y avait glassfish v3 en embedded : https://embedded-glassfish.dev.java.net/
    Quelqu'un l'aurait-il déjà utiliser pour faire du test ?
    Ca se passe comment ? Faut-il vraiment monter le serveur pas à pas ?
    Comment peut-on tester s'il faut livrer le livrable (jar/ear) si on n'est pas encore au stade du package (mvn) ?

  2. #2
    Membre régulier
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Février 2008
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2008
    Messages : 49
    Points : 88
    Points
    88
    Par défaut
    Antonio Goncalves a écrit un livre "Beginning Java EE 6 with Glassfish", sur les exemples, on peut voir une solution au problème de test des EJB3.1.
    Il utilise le fait qu'on peut charger JPA en mode SE.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    public class PersonneTest {
        // ======================================
        // =             Attributes             =
        // ======================================
        private static EntityManagerFactory emf;
        private static EntityManager em;
        private static EntityTransaction tx;
     
        // ======================================
        // =          Lifecycle Methods         =
        // ======================================
        @BeforeClass
        public static void initEntityManager() throws Exception {
            emf = Persistence.createEntityManagerFactory("chapter02PU");
            em = emf.createEntityManager();
        }
     
        @AfterClass
        public static void closeEntityManager() throws SQLException {
            if (em != null) em.close();
            if (emf != null) emf.close();
        }
     
        @Before
        public void initTransaction() {
            tx = em.getTransaction();
        }
        // ======================================
        // =              Unit tests            =
        // ======================================
        @Test
        public void testMonTest1() throws Exception {
            Personne instance= new Personne();
            instance.setNom("toto");        
            tx.begin();
            em.persist(instance);
            tx.commit();
            assertNotNull("ID should not be null", instance.getId());
            List<Personne> personnes = em.createNamedQuery("findAllPersonnes").getResultList();
            assertEquals(1, personnes.size());
        }
        ...
    }
    C'est astucieux et ça permet de tester la partie persistance manque maintenant à trouver la solution pour tester les ejb stateless/full.

    L'absence d'OpenEjb et sa simplicité se fait sentir

  3. #3
    Membre régulier
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Février 2008
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2008
    Messages : 49
    Points : 88
    Points
    88
    Par défaut
    Bon, en continuant ma lecture des exemples d'Antonio Goncalves (je crois que je vais acheter son livre ), dans le chapitre 7 http://kenai.com/projects/beginninge...pter07?rev=395
    on peut voir que pour les tests, le "Context" est chargé grâce aux propriétés de EJBContainer (l'implémentation venant de la dependance glassfish-embedded-all dans le pom.xml).
    L'appelle aux stateless/full se fait de façon cavalière avec un uri sorti du chapeau de Majax.
    Et le tour est joué.

    C'est magnifique, du grand art.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Novembre 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Novembre 2010
    Messages : 20
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par Schouss Voir le message
    Bonjour,

    Mais voilà, il y a openejb qui n'a que faire de :
    <dependency>
    <groupId>javax</groupId>
    <artifactId>javaee-api</artifactId>
    <version>6.0</version>
    <scope>provided</scope>
    </dependency>

    il veut du


    Sinon on a un beau :
    OpenEJB encountered an unexpected error while attempting to instantiate the assembler.: Absent Code attribute in method that is not native or abstract in class file javax/resource/spi/ResourceAdapterInternalException
    Pour ma part,j'utilise Spring pour tester mes ejb...je pourrai t en dire plus si tu le souhaite

    concernant le package javaee-api, il te génère l'erreur 'Absent code attribute' tout simplement parce que ce package ne contient que les interfaces (API) et non les implémentations (le vrai code), ce package est utile pour compiler mais doit rester 'provided' dans ton pom.

    Le problème c'est en mode 'test', maven va essayer de trouver dans ce package les dépendances dont il a besoin or il ne trouve rien...

    Pour resoudre ton probleme, commente cette dependency et remplace la par ses implementations : javax.ejb, javax.annotations, etc :::

    par exemple dans mon pom, il y a ça :

    <dependency>
    <groupId>org.glassfish</groupId>
    <artifactId>javax.ejb</artifactId>
    <version>3.0.1-b20</version>
    <scope>provided</scope>
    </dependency>
    <dependency>
    <groupId>org.glassfish</groupId>
    <artifactId>javax.servlet</artifactId>
    <version>3.0.1-b20</version>
    <scope>provided</scope>
    </dependency>
    <dependency>
    <groupId>org.glassfish</groupId>
    <artifactId>javax.annotation</artifactId>
    <version>3.0.1-b20</version>
    <scope>provided</scope>
    </dependency>
    <dependency>
    <groupId>javax.persistence</groupId>
    <artifactId>persistence-api</artifactId>
    <version>1.0</version>
    </dependency>


    tu peux sans doute t en inspirer et changer les versions car je crois qu'elles ont évolué depuis...voila bons tests!!!

    PS : pour tester tes ejb via Spring-JUnit, voici un tuto excellent :
    ecris ceci dans google "Spring Framework Training Kit.pdf", va au premier résultat et au chapitre 4 : JPA managé par Spring

  5. #5
    Membre à l'essai
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Novembre 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Novembre 2010
    Messages : 20
    Points : 12
    Points
    12
    Par défaut
    cela aussi nessecite d etre ajoute au pom :

    <repositories>
    <repository>
    <id>Glassfish</id>
    <name>Glassfish Repository</name>
    <url>http://download.java.net/maven/glassfish</url>
    </repository>
    </repositories>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Tests Unitaires pour EJB3.1
    Par geforce dans le forum Tests et Performance
    Réponses: 1
    Dernier message: 19/07/2011, 14h13
  2. Tests Unitaires - Production de documents
    Par giviz dans le forum Test
    Réponses: 13
    Dernier message: 07/02/2005, 08h41
  3. Tests unitaires en C#
    Par Bouboubou dans le forum Test
    Réponses: 2
    Dernier message: 01/10/2004, 13h03
  4. [TESTS] Tests unitaires
    Par mathieu dans le forum Test
    Réponses: 4
    Dernier message: 08/01/2004, 12h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo