Vous regardez une version antérieure (v. /wiki/display/PROJ/3.26+Tests) de cette page.

afficher les différences afficher l'historique de la page

« Afficher la version précédente Vous regardez la version actuelle de cette page. (v. 3) afficher la version suivante »

Introduction

ESUP-Commons utilise JUnit. C'est un framework de test unitaire bien intégré avec Spring.

Pour l'utiliser dans votre projet vous devez le référencer comme dépendance de votre projet avec un scope test. Ce scope fera qu'il ne sera utiliser que pendant les phases de test.

<dependency>
 <groupId>junit</groupId>
 <artifactId>junit</artifactId>
 <version>4.8.1</version>
 <scope>test</scope>
</dependency>

Votre code de test doit être placé dans src/test/java

Si vous avez besoin de ressources spécifiques aux tests, elles peuvent être placées dans src/test/resources

Le code de test est utilisé lors de la commande mvn test. Il est aussi appelé lors des phase de packaging, d'installation, de déploiement et de release.

Code de test

Votre code de test doit être placé dans src/test/java

Si vous avez besoin de ressources spécifiques aux tests, elles peuvent être placées dans src/test/resources

Annoter une classe de test

@ContextConfiguration(locations="/META-INF/applicationContext.xml")
@RunWith(SpringJUnit4ClassRunner.class)
public class ExempleTest {

@ContextConfiguration

Permet de spécifier où se trouve le fichier de Configuration Spring
Typiquement il peut se trouver dans src/test/resources et être spécifique à cette classe de test
Il n'y a rien d'autre à faire pour charger le context Spring

@RunWith(SpringJUnit4ClassRunner.class)

Informe JUnit qu'il s'exécute dans un environnement Spring

Annoter une méthode de test

@Test
public void testTruc() {

@Test

Marque la méthode comme une méthode de test
Chaque méthode avec cette annotation fera l'objet d'un test

@Test(expected = Exception.class)

On peut parfois vouloir tester un exception

@Test(timeout=200)

On peut aussi vouloir tester un temps de réponse

Initialisation

Injecter un service

Il est classique de tester une méthode d'un service. Pour le faire il faut y avoir accès. Une solution simple consiste à utiliser une annotation pour l'injecter dans le classe de test :

@Autowired
DomainService domainService;

Si vous avez plusieurs implémentation de DomainService vous devez préciser celle que vous utilisez :

@Autowired
@Qualifier("myServiceImpl")
DomainService domainService;

Ces annotations sont spécifiques à Spring. JSR 250 normalise ces annotations. Pour les utiliser vous devez ajouter une dépendance :
<dependency>
 <groupId>javax.inject</groupId>
  <artifactId>javax.inject</artifactId>
  <version>1</version>
</dependency>
L'annotation à utiliser est soit :
@Inject

DomainService domainService;soit :

@Resource(name="myServiceImpl")

DomainService domainService;

  • Aucune étiquette