En recherchant les meilleures pratiques de tests unitaires pour aider à élaborer des lignes directrices pour mon organisation, je me suis demandé s'il était préférable ou utile de séparer les montages de test (classes de test) ou de conserver tous les tests d'une seule classe dans un seul fichier.
Fwiw, je me réfère aux "tests unitaires" au sens pur, ce sont des tests en boîte blanche ciblant une seule classe, une assertion par test, toutes les dépendances moquées, etc.
Un exemple de scénario est une classe (appelez-la Document) qui a deux méthodes: CheckIn et CheckOut. Chaque méthode implémente différentes règles, etc. qui contrôlent leur comportement. En suivant la règle d'une assertion par test, j'aurai plusieurs tests pour chaque méthode. Je peux soit placer tous les tests dans une seule DocumentTests
classe avec des noms comme CheckInShouldThrowExceptionWhenUserIsUnauthorized
et CheckOutShouldThrowExceptionWhenUserIsUnauthorized
.
Ou, je pourrais avoir deux classes de test distinctes: CheckInShould
et CheckOutShould
. Dans ce cas, mes noms de test seraient raccourcis, mais ils seraient organisés de sorte que tous les tests pour un comportement (méthode) spécifique soient ensemble.
Je suis sûr qu'il y a des avantages et des inconvénients à l'une ou l'autre approche et je me demande si quelqu'un a opté pour plusieurs fichiers et, si oui, pourquoi? Ou, si vous avez opté pour l'approche à fichier unique, pourquoi pensez-vous que c'est mieux?
testResponseContainsSuccessTrue()
, testResponseContainsMyData()
et testResponseStatusCodeIsOk()
. Vous les avez en un seul testResponse()
qui a trois affirme: assertEquals(200, response.status)
, assertEquals({"data": "mydata"}, response.data)
etassertEquals(true, response.success)