Ne JUnit exécuter des cas de test de manière séquentielle?
Dans ce post, j'ai posé une petite question en tant que partie d'un problème plus important. Puisque je n'ai pas de réponses encore, j'ai mis ma question ici:
Est-il raisonnable de supposer que JUnit exécute des cas de test de manière séquentielle: un cas de test se termine befores la suivante commence. Est-il différent entre JUnit versions (l'une de mes priorités est sur JUnit4)? Et si non, est-il un moyen simple de la force de JUnit pour exécuter des tests de façon séquentielle?
Merci
- Comme une note de côté, voici un peu plus sur l'exécution de tests en parallèle en utilisant JUnit 4.7: stackoverflow.com/questions/423627/...
- Si vous utilisez JUnit au sein de votre Maven build, et votre build est réglé pour être multi-thread en utilisant le paramètre-T, (par exemple -T 4C), les tests va être exécuté en parallèle, si possible
Vous devez vous connecter pour publier un commentaire.
Oui, par défaut, je crois qu'il exécute des tests de façon séquentielle.
JUnit 4.6 introduit un dispositif expérimental
ParallelRunner
pour l'exécution de tests en parallèle - je ne sais pas de son statut actuel. Je m'attends à ce parallélisme de rester un "opt-in" fonctionnalité par défaut. (À en juger par les autres réponses, il ressemble à ce qui est maintenant là pour rester, mais sous une forme légèrement différente - et encore opt-in.)L'exécution en parallèle des tests est pris en charge depuis JUnit 4.7. Mais autant que je sache, il n'est jamais fait automatiquement, vous devez le configurer, par exemple, comme ici: http://java.dzone.com/articles/running-junit-tests-parallel
Mais n'oubliez pas que:
Je ne sais pas pourquoi vous posez la question, mais si les critères ci-dessus n'est pas respectée, vous pouvez penser au sujet de votre conception.
Solide et raisonnable suppose: oui, JUnit est mono-thread par défaut.
Sinon on ne sais pas si un test a échoué parce que le code est cassé ou il a échoué en raison de problèmes de concurrence d'accès si certains tests couru en parallèle.
Oui,
Et pensez aussi à la
@before
et@after
vous y disposez d'un code qui restaure l'état pour le prochain test à exécuter.Oui. Comme mentionné quelque part dans les commentaires, vous devez planifier avec soin les cas de test d'installation et de démontage (tous les super-classes d'affecter ces actions), ainsi que testsuite l'installation et le démontage.
Aussi, sur une seconde note, aussi loin que je me souvienne, JUnit ne garantit pas l'ordre d'exécution des cas de tests (qui est, sauf si elles sont une suite, je suppose). C'est important, et devrait vous pousser à l'exécution d'une très précise de nettoyage et SUT restauration de l'état entre les tests, et d'éviter des cas de test en s'appuyant sur les résultats d'autres cas de tests. vous pourriez dire que c'est une sorte de antipattern :).
Avec mon expérience, je peux dire que nous avons peut sérialiser des tests dans une classe en nommant le nom de la méthode d'examen en elle.
ex:
L'ordre est firstTest,thirdTest,secondTest