web-dev-qa-db-fra.com

Dois-je séparer les tests unitaires et les tests d'intégration?

Je dois écrire des tests unitaires et des tests d'intégration pour un projet.

  • Tous les tests doivent-ils être placés dans un dossier de tests unique?
  • Ou les tests unitaires et les tests d'intégration doivent-ils être chacun dans un dossier de tests séparé?
  • Ou devrais-je même les mettre dans projets séparés?

Si je les garde ensemble, y a-t-il des avantages ou des inconvénients à cette approche?

17
Ahmed Ragheb

En général: oui, vous devez placer les tests d'intégration et les tests unitaires dans différents dossiers. Souvent, les programmeurs ne tracent pas une ligne claire entre ces deux types de tests et écrivent simplement tout type de test utile. Mais les tests d'intégration ont tendance à être plus lents, car ils impliquent souvent:

  • Requêtes de base de données
  • Demandes de réseau
  • Comportement dépendant du temps
  • De grandes quantités de données

En revanche, un test unitaire se moquerait de toute opération coûteuse, de sorte que les tests unitaires ont tendance à s'exécuter rapidement (en fait, la partie la plus lente de l'exécution du test est souvent le cadre de test lui-même).

Lorsqu'un programmeur travaille sur le système, il est dans un cycle d'édition-test. Plus ils obtiennent de rétroaction de test rapidement et plus le cycle est court, plus ils peuvent être productifs. Donc là, nous voulons exécuter uniquement des tests importants qui se terminent rapidement. La suite de tests complète ne serait exécutée que dans le cadre d'un processus d'assurance qualité, par exemple sur un serveur CI.

Cela signifie que les grandes suites de tests doivent être classées. Pouvons-nous sélectionner uniquement des tests unitaires pour un composant particulier? Pouvons-nous exclure les tests lents? Une façon simple de le faire est de maintenir différentes suites de tests dans différents répertoires. Si vous n'avez que très peu de tests, un seul répertoire serait également OK tant qu'un programmeur peut facilement sélectionner un sous-ensemble de tests.

Tout ce qui permet à un programmeur d'obtenir rapidement des commentaires est bon. La suite de tests la plus complète n'a pas d'importance si elle n'est pas exécutée régulièrement.

Lectures complémentaires:

18
amon