J'ai donc un module d'authentification que j'ai écrit il y a quelque temps. Maintenant, je vois les erreurs de mon chemin et j'écris des tests unitaires pour cela. En écrivant des tests unitaires, j'ai du mal à trouver de bons noms et de bons domaines à tester. Par exemple, j'ai des choses comme
- RequirementsLogin_should_redirect_when_not_logged_in
- RequirementsLogin_should_pass_through_when_logged_in
- Login_should_work_when_given_proper_credentials
Personnellement, je pense que c'est un peu moche, même si ça semble "convenable". J'ai également du mal à faire la différence entre les tests en les balayant simplement (je dois lire le nom de la méthode au moins deux fois pour savoir ce qui vient d'échouer)
Donc, j'ai pensé que peut-être au lieu d'écrire des tests qui testent purement la fonctionnalité, peut-être écrire un ensemble de tests qui couvrent des scénarios.
Par exemple, voici un talon de test que j'ai trouvé:
public class Authentication_Bill
{
public void Bill_has_no_account()
{ //assert username "bill" not in UserStore
}
public void Bill_attempts_to_post_comment_but_is_redirected_to_login()
{ //Calls RequiredLogin and should redirect to login page
}
public void Bill_creates_account()
{ //pretend the login page doubled as registration and he made an account. Add the account here
}
public void Bill_logs_in_with_new_account()
{ //Login("bill", "password"). Assert not redirected to login page
}
public void Bill_can_now_post_comment()
{ //Calls RequiredLogin, but should not kill request or redirect to login page
}
}
Est-ce un motif entendu? J'ai vu des histoires d'acceptation et autres, mais c'est fondamentalement différent. La grande différence est que je propose des scénarios pour "forcer" les tests. Plutôt que d'essayer manuellement de trouver des interactions possibles que je devrai tester. De plus, je sais que cela encourage les tests unitaires qui ne testent pas exactement une méthode et une classe. Je pense que c'est OK cependant. De plus, je suis conscient que cela causera des problèmes pour au moins certains cadres de test, car ils supposent généralement que les tests sont indépendants les uns des autres et que l'ordre n'a pas d'importance (où il le serait dans ce cas).
Quoi qu'il en soit, est-ce un modèle conseillé du tout? Ou, serait-ce un ajustement parfait pour les tests d'intégration de mon API plutôt que comme des tests "unitaires"? C'est juste dans un projet personnel, donc je suis ouvert à des expériences qui peuvent ou non bien se passer.
_test
annexe et utilise des commentaires pour noter les résultats que j'attends. S'il s'agit d'un projet personnel, trouvez un style avec lequel vous vous sentez à l'aise et respectez-le.