Suites de test JUnit 4

99

Comment créer des suites de tests avec JUnit 4?

Toute la documentation que j'ai vue ne semble pas fonctionner pour moi. Et si j'utilise l'assistant Eclipse, cela ne me donne pas la possibilité de sélectionner l'une des classes de test que j'ai créées.

Adam Taylor
la source
4
Avec Eclipse 3.7 Indigo, l'assistant de la suite de tests prend désormais en charge JUnit 4
Fabian Steeg

Réponses:

147
import org.junit.runners.Suite;
import org.junit.runner.RunWith;

@RunWith(Suite.class)
@Suite.SuiteClasses({TestClass1.class, TestClass2.class})
public class TestSuite {
  //nothing
}
Joachim Sauer
la source
61

Vous pouvez créer une suite comme ça. Par exemple, une AllTestsuite ressemblerait à quelque chose comme ça.

package my.package.tests;

@RunWith(Suite.class)
@SuiteClasses({
    testMyService.class,
    testMyBackend.class,
    ...
})

public class AllTests {}

Vous pouvez maintenant l'exécuter de différentes manières:

  1. cliquez avec le bouton droit et exécutez dans Eclipse en tant que test Junit
  2. créer une application Java exécutable; Classe principale = 'org.junit.runner.JUnitCore' et Args = 'mon.package.tests.AllTests'
  3. exécuter à partir de la ligne de commande:

    $ java -cp build/classes/:/usr/share/java/junit4.jar:/usr/share/java/hamcrest-core.jar org.junit.runner.JUnitCore my.package.tests.AllTests
cmcginty
la source
Ajouterait encore plus de VoteUps pour la CMDLine :)
Gruber
9

Je pense que TestSuite est tombé en disgrâce. C'était peut-être le style d'avant 4.x, mais ce n'est pas maintenant pour autant que je sache.

Je viens d'annoter les tests que je veux, puis j'exécute la classe. Tous les tests annotés sont exécutés. Je pourrais utiliser Ant, mais la plupart du temps, IntelliJ les gère pour moi.

duffymo
la source
11
Je peux me tromper, mais je pense que TestSuite est toujours bon lorsque nous devons spécifier l'ordre des tests, en particulier dans les tests d'intégration automatisés où le test de scénarios plus petits devrait précéder des scénarios plus complexes.
bertie
@duffymo Je trouve votre commentaire intéressant car j'ai jusqu'à présent été coaché ​​dans la ligne de pensée pré-4.x concernant l'organisation des tests en suites de tests
Vatsala
6
Si vous avez un plus grand nombre de tests, des domaines / modules fonctionnels différents, une distinction entre les tests non essentiels et auxiliaires / plus lents / coûteux - pour l'une de ces raisons - vous structureriez les tests en une TestSuite.
Thomas W
1
Vous pouvez utiliser l' @SuiteClassannotation dans plusieurs classes et vous pouvez imbriquer des suites dans des suites. La ligne de pensée pour les organiser dans 3.x est toujours tout à fait valable (et devrait être utilisée). Vous pouvez tout structurer exactement de la même manière qu'auparavant; vous utilisez simplement la syntaxe d'annotation au lieu de TestSuite.suite(). Il n'y a vraiment aucun avantage à utiliser TestSuitesur l'annotation et vous pouvez profiter de toutes les améliorations de JUnit 4 si vous utilisez l'annotation équivalente sur le plan organisationnel.
Thunderforge
3

Voici les étapes pour créer une suite JUnit dans eclipse:

  1. Dans la vue 'Package Explorer' de la perspective eclipse 'Java', sélectionnez vos tests unitaires dans leur package, à l'intérieur du projet eclipse java.
  2. Cliquez avec le bouton droit sur l'un des tests sélectionnés.
  3. Dans le menu contextuel, sélectionnez Nouveau, Autre…
  4. Ouvrez le dossier 'Java', puis ouvrez le dossier 'JUnit'
  5. Sélectionnez 'JUnit Test Suite' puis sélectionnez le bouton 'Suivant'
  6. Sélectionnez le bouton 'Terminer'
  7. Résultat: le fichier de la suite 'AllTests.java' est créé, avec des tests automatiquement inclus
  8. Sélectionnez le bouton Exécuter dans eclipse
  9. Résultat: tous les tests de la suite sont exécutés
  10. Vous pouvez maintenant pointer vers ce fichier de suite avec ANT, Jenkins ou un autre outil d'intégration continue de configuration de construction.

Informations sur la version: ceci concerne eclipse Neon et JUnit 4. Vous pouvez également sélectionner JUnit 3 avant de sélectionner «Terminer» à l'étape 6.

coq rouge
la source
Pourriez-vous publier un fichier build.xml montrant comment exécuter cette suite de tests depuis ANT?
LiborStefek
1

Du haut de ma tête, créez une TestSuite et invoquez addTests. Si vous voulez qu'une source regarde, essayez n'importe quelle bibliothèque open source comme hibernate ou quelque chose d'apache et jetez un œil dans le répertoire de test de la source pour une suite de tests ...

mP.
la source