Je suis novice en matière de tests unitaires et j'ai besoin de conseils sur les meilleures pratiques. Je code en Cocoa avec Xcode.
J'ai une méthode qui valide une URL qu'un utilisateur entre. Je veux qu'elle n'accepte que le protocole http:// et que les URL ne contiennent que des caractères valides.
Est-il acceptable d'avoir un seul test pour cela et d'utiliser un fichier de données de test ? Le fichier de données fournit des exemples d'URL valides/invalides et indique si l'URL doit être validée ou non. Je l'utilise également pour vérifier la description et le domaine du message d'erreur.
Pourquoi je fais cela
J'ai lu Pragmatic Unit Testing in Java with JUnit, qui donne un exemple avec un fichier de données externe, ce qui me fait penser que c'est correct. De plus, cela signifie que je n'ai pas besoin d'écrire beaucoup de tests unitaires avec un code très similaire juste pour tester des données différentes.
Mais d'un autre côté...
Si je fais un test pour :
- caractères non valides
- y un protocole invalide
- y URLs valides
tous dans le même fichier de données de test (et donc dans le même test) cela me posera-t-il des problèmes par la suite ? J'ai lu qu'un test ne devait échouer que pour une seule raison.
Est-ce que ce que je fais est bien ?
Comment les autres personnes utilisent-elles les données de test dans leurs tests unitaires, si elles le font ?