Écrire un test Unitaire pour un générateur de nombre aléatoire

J'ai une méthode qui retourne un nombre aléatoire entre 0 et 10.

public int roll(){
    int pinsKnockedDown = (int) (Math.random() * 10);
    return pinsKnockedDown;
}

Comment pourrais-je écrire un test Unitaire pour cela? Pour l'instant j'ai mis l'appel en boucle de sorte qu'il s'exécute 1000 fois et échoue le test si
- le nombre est inférieur à 0
- le nombre est de plus de 10

Comment puis-je vérifier que tous les numéros ne sont pas les mêmes, c'est à dire

Écrire un test Unitaire pour un générateur de nombre aléatoire

Exécuter plusieurs fois (en millions de dollars), compter le nombre d'occurences de chaque numéro et de décider si elle est suffisamment aléatoire pour vous. Voir par exemple: en.wikipedia.org/wiki/Statistical_randomness
Vous voulez probablement quelque chose qui se rapproche d'une distribution uniforme. Ce n'est pas quelque chose que vous pouvez facilement "test" avec des tests unitaires, plutôt que qu'il serait probablement plus facile (et sans doute le plus utile), pour prouver que votre RNG produit une distribution uniforme de la plage que vous voulez..
Je ne le ferais pas. C'est le test unitaire devenu fou. La forme du code garantit le résultat. Vous n'avez pas à tester bibliothèque d'Api, ou de multiplication par dix.
Double Possible de le Test d'une méthode produisant un résultat aléatoire

OriginalL'auteur Carrie Hall | 2013-02-11