J'ai trouvé le bon usage (ou au moins de la documentation) de JUnit très déroutant. Cette question sert à la fois comme une future référence et une véritable question.
Si j'ai bien compris, il y a deux approches principales pour créer et exécuter un test JUnit:
À l'approche d'Un (JUnit 3-style): créer une classe qui étend la classe TestCase, et de commencer des méthodes d'essai avec le mot - test
. Lors de l'exécution de la classe de Test JUnit (dans Eclipse), toutes les méthodes commençant par le mot - test
sont automatiquement exécutées.
import junit.framework.TestCase;
public class DummyTestA extends TestCase {
public void testSum() {
int a = 5;
int b = 10;
int result = a + b;
assertEquals(15, result);
}
}
Approche B (JUnit 4-style): créer un niveau "normal" de la classe et ajouter un @Test
d'annotation à la méthode. Notez que vous n'avez PAS à démarrer la méthode avec le mot - test
.
import org.junit.*;
import static org.junit.Assert.*;
public class DummyTestB {
@Test
public void Sum() {
int a = 5;
int b = 10;
int result = a + b;
assertEquals(15, result);
}
}
Le mélange des deux ne semble pas être une bonne idée, voir, par exemple, ce stackoverflow question:
Maintenant, mes questions(s):
- Qu'est-ce que l'approche privilégiée, ou quand voulez-vous utiliser l'un plutôt que l'autre?
- Approche B permet de tester des exceptions par l'extension de l'annotation @Test comme en
@Test(expected = ArithmeticException.class)
. Mais comment faites-vous tester pour les exceptions lors de l'utilisation de l'approche d'Un? -
Lors de l'utilisation de l'approche d'Un, vous pouvez regrouper un certain nombre de classes de test dans une suite de test comme ceci:
TestSuite suite = new TestSuite("All tests");
suite.addTestSuite(DummyTestA.class);
suite.addTestSuite(DummyTestAbis.class);
Mais cela ne peut pas être utilisé avec l'approche B (puisque chaque testclass devrait sous-classe TestCase). Quelle est la bonne façon pour un groupe de tests pour l'approche B?
Edit: j'ai ajouté la JUnit versions pour les deux approches