J'ai une classe destinée à générer un mot de passe aléatoire d'une longueur également aléatoire, mais limité entre une longueur minimale et maximale définie.
Je construis des tests unitaires et j'ai rencontré un petit problème intéressant avec cette classe. L’idée d’un test unitaire est qu’il soit répétable. Si vous exécutez le test cent fois, il devrait donner les mêmes résultats cent fois. Si vous dépendez d'une ressource qui peut ou peut ne pas être là ou peut ne pas être dans l'état initial que vous attendez, alors vous êtes censé vous moquer de la ressource en question pour vous assurer que votre test est vraiment toujours répétable.
Mais qu'en est-il dans les cas où le SUT est censé générer une sortie indéterminée?
Si je fixe la longueur minimale et maximale à la même valeur, je peux facilement vérifier que le mot de passe généré est de la longueur attendue. Mais si je spécifie une plage de longueurs acceptables (par exemple, 15 à 20 caractères), vous avez maintenant le problème suivant: vous pouvez exécuter le test cent fois et obtenir 100 passages, mais à la 101ème exécution, vous pourriez obtenir une chaîne de 9 caractères.
Dans le cas de la classe de mot de passe, qui est assez simple en son cœur, cela ne devrait pas être un gros problème. Mais cela m'a fait penser au cas général. Quelle est la stratégie généralement acceptée comme la meilleure lorsqu’il s’agit de SEU générant une sortie indéterminée par conception?