J'ai besoin d'écrire des tests junit sur le code Java qui appelle Math.random()
. Je sais que je peux définir la graine si j'instancie mon propre objet aléatoire pour produire des résultats reproductibles. Existe-t-il un moyen de le faire également pour Math.random()
?Définir seed sur Math.random()
Répondre
La méthode Math.random()
utilise un champ statique privé:
private static Random randomNumberGenerator;
Si vous vraiment vraiment besoin de mettre à un new Random(CONSTANT_SEED)
(par exemple, vous devez code de test JUnit que vous avez aucun contrôle sur) vous pourrait le faire en utilisant réflexion.
Que diriez-vous de créer une instance de Random
vous-même et de l'utiliser à la place? Math.random()
en crée un et l'utilise, donc je ne pense pas que vous pouvez jouer avec sa graine. Cependant, si vous créez un Random
et que vous l'utilisez directement, vous pouvez en définir l'origine lorsque vous le créez et/ou vous pouvez appeler le setSeed()
ultérieurement.
Set avec instance de hasard avec votre semence ou étendre simplement les méthodes pour renvoyer des valeurs dont vous avez besoin
Field field = Math.class.getDeclaredField("randomNumberGenerator");
field.setAccessible(true);
field.set(null, new Random() {
@Override
public double nextDouble() {
return 1;
}
});
La version canonique de random devrait retourner 4! –
- 1. seed-fu ne fonctionne pas sur winxp
- 2. Comment rendre JavaScript Math.random Répéter?
- 3. JS: Math.random pour le tableau
- 4. db: seed ne charge pas les modèles
- 5. C++ Random Seed, objets globaux et SDL_Threads
- 6. Que puis-je faire avec Seed?
- 7. "rake db: seed" aucune erreur de méthode
- 8. Pourquoi does (int) Math.random() * 10 produit 10 en Java?
- 9. db: seed - Comment changer la valeur de la production?
- 10. Seed Mechanism ne fonctionne pas bien pour BlackBerry
- 11. Comment désinstaller un plugin (Seed Fu) de Rails
- 12. Définir l'orientation sur portrait sur l'iPhone
- 13. Est-ce que math.random suppose que 0 est un nombre entier?
- 14. comment définir IDENTITY_INSERT sur ON?
- 15. Comment définir NSMutableString sur null?
- 16. Remplissage de la base de données globalisée (Globalize2) à l'aide de db: seed
- 17. Impossible de comprendre comment utiliser db: seed pour les rails dans netbeans
- 18. Comment définir le filtre sélectionné sur QFileDialog?
- 19. Définir DisplayObject pour passer sur MouseEvents
- 20. Comment définir ActiveModel :: Base.include_root_in_json sur false?
- 21. Comment définir un objet sur null
- 22. Définir le bean DataSource sur le code
- 23. Comment définir tabindex sur panelTabSet dans ICEfaces
- 24. Définir dynamiquement le titre sur le dialogue
- 25. Définir un: hover basé sur la classe
- 26. Comment définir l'expéditeur sur une action NSMenuItem?
- 27. Définir document.title sur la valeur par défaut
- 28. ASP.NET définir le thème basé sur l'URL
- 29. Comment définir l'indicateur HttpOnly sur JSF/Richfaces
- 30. Définir toutes les valeurs 0 sur NULL
Pourriez-vous éventuellement élaborer de la part de la réflexion de votre réponse s'il vous plaît? –