Bonjour,

Je suis confrontée à un problème sur les tests unitaires des EJB avec Junit4 en utilisant un EJBContainer.

L’injection du POJO (via l'annotation @Inject ) dans l'EJB que je suis en train de tester ne fonctionne pas (ça me renvoie un 'null').

Mon EJB à tester :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
@Stateless
public class HelloWorld {  
 
    @Inject // 
    Personne personne; // null quand je récupère mon EJB via un lookup 
 
    public String hello(String message){         
        return personne.getNom()+"__"+message;      
    }      
}
Class Personne ( Simple POJO ):
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
public class Personne {
 
    private String nom;
 
    public Personne() {
      this.nom = "myName";
    }
 
    public String getNom() {
        return nom;
    }
 
    public void setNom(String nom) {
        this.nom = nom;
    }    
}
Ma classe Test :
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
public class HelloWorldTestTest {
 
    public HelloWorldTestTest() {
    }
 
    @Test
    public void testHello() throws Exception {        
 
        EJBContainer container = javax.ejb.embeddable.EJBContainer.createEJBContainer(props);
        HelloWorld instance = 
(HelloWorld)container.getContext().lookup("java:global/classes/HelloWorld");
 
  System.out.println( instance..hello("Coucou")); // <------- Null Exception
 
   container.close();
  }
}
Mon EJB est correctement récupéré via le lookup, mais l'injection de la classe Personne dans cet EJB ne se fait pas. Je n'arrive pas à trouver pourquoi.

Quelqu'un saurait-il m'indiquer comment faire ?

Merci d'avance pour votre aide.