Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.
Commentaire: Migrated to Confluence 5.3
Sommaire

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.

Bloc de code
languagehtml/xml
<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

Bloc de code
@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

Bloc de code
@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 :

Bloc de code
@Autowired
DomainService domainService;

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

Bloc de code
@Autowired
@Qualifier("myServiceImpl")
DomainService domainService;
Remarque

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;

Code d'initialisation

On peut avoir besoin de faire des opérations avant et/ou après des tests. Pour cela on peut créer des méthodes que l'on peut annoter :

@Before

La méthode sera exécutée avant chaque test

@After

La méthode sera exécutée après chaque test

@BeforeClass

La méthode sera exécutée une fois avant les tests de la classe

@AfterClass

La méthode sera exécutée une fois après les tests de la classe