Je pense qu'il y a trois différents aspects de ce problème que vous testez.
La première: est mon algorithme le droit? C'est, compte tenu correctement fonctionnement du générateur de nombres aléatoires, il va produire des dates qui sont distribués au hasard dans la gamme?
La seconde: l'algorithme de gérer les cas de bord correctement? Par exemple, lorsque le générateur de nombre aléatoire produit de la plus haute ou la plus basse permise valeurs, n'a rien de casser?
La troisième: c'est ma mise en œuvre de l'algorithme de travail? C'est, compte tenu d'une liste connue de la pseudo-aléatoire des entrées, c'est la production attendue liste des pseudo-aléatoire dates?
Les deux premières choses ne sont pas quelque chose que j'avais à construire dans l'unité-suite de tests. Ils sont quelque chose que j'avais de prouver lors de la conception du système. Je serais probablement le faire par écrit au moyen d'un harnais de test qui a généré un tas de dates et effectué un test du chi carré, comme daniel.rikowski suggéré. Je voudrais aussi assurez-vous que ce test n'a pas arrêter jusqu'à ce qu'il s'occupait à la fois de l'arête des cas (en supposant que ma gamme de nombres aléatoires est suffisamment petite pour que je puisse sortir avec cette). Et j'avais ce document, de sorte que n'importe qui à venir et d'essayer d'améliorer l'algorithme savoir que c'est une modification de rupture.
Le dernier est quelque chose que je ferais un test unitaire pour. J'ai besoin de savoir que rien ne s'est glissée dans le code qui casse sa mise en œuvre de cet algorithme. Le premier signe je vais les faire quand cela arrive, c'est que le test échouera. Alors, je vais revenir pour le code et découvrez que quelqu'un d'autre a pensé qu'ils étaient réparer quelque chose et il s'est brisé à la place. Si quelqu'un a corrigé l'algorithme, il faudrait être sur eux pour résoudre ce test.