Hello!
y'a t'il un moyen simple de tester une méthode privée avec NUnit? (je pensais faire hériter ma classe de test de ma classe testée et passer de private à protected, c'est une bonne solution?)
Version imprimable
Hello!
y'a t'il un moyen simple de tester une méthode privée avec NUnit? (je pensais faire hériter ma classe de test de ma classe testée et passer de private à protected, c'est une bonne solution?)
Salut,
Pas de moyen reelement simple... :)Citation:
y'a t'il un moyen simple de tester une méthode privée avec NUnit? (je pensais faire hériter ma classe de test de ma classe testée et passer de private à protected, c'est une bonne solution?)
En plus, si c'est une classe privee, tu ne devrais pas avoir a modifier ton design pour pouvoir la tester...
donc, deux solutions, soit tu testes ta methode privee en testant la/les methodes qui l'appellent
soit tu utilises la reflexion pour la tester...
un p'tit exemple ?
Je ne me suis pas trop servi de cette methode...personnellement, je prefere tester en me disant que je suis un client de mon API -> pas interesse dans la cuisine interne de ma classe...Code:
1
2
3
4
5 MethodInfo MIGeneratePayLoad; Type t = typeof(WebserviceFactory); MIGeneratePayLoad = t.GetMethod("GeneratePayLoad", BindingFlags.NonPublic | BindingFlags.Static); StringBuilder payload = new StringBuilder("<?xml version=\"1.0\" encoding=\"utf-8\"?>"); Assert.AreEqual(MIGeneratePayLoad.Invoke(null, new object[] { "" }),payload.ToString());
Si vraiment, tu veux faire des tests intensifs sur des methodes privees, mets tes tests directement dans ta classe (perso, j'aime pas... :D )
Merci pour ta réponse! (j'ai tendance à squatter certaines personnes sur ce forum décidemment :D)
je pense que je vais également partir du principe que c'est de la cuisine interne (vraiment pas envie de mettre des tests à l'intérieur de ma classe).
En mettant des bons controles à l'intérieur des méthodes privées, ca devrait suffire :D
:merci:, :resolu:
Je me permets quelques remarques :
- J'approuve l'approche de base; il ne faut pas tester une méthode privée autrement que par le biais des résultats produits par les méthodes publiques de la classe.
- Si pour d'excellentes raisons il te semble qu'un test sur une méthode privée est indispensable, il s'agit peut être (je dis bien peut être) d'une petite erreur de design et la méthode privée mériterait éventuellement d'être modifiée/promue/extraite.
- Si non-seulement la méthode doit rester privée et que vraiment un test se justifie, alors oui, la meilleure approche est la reflexion car elle n'est pas intrusive. En aucun cas il ne faut sacrifier un design correct sur l'autel de la testabilité.
Ho un suisse :D (enfin presque... :P)
merci pour la réponse! en me balladant sur le net j'ai lu un peu pareil partout et du coup j'en ai un peu perdu mes notions de bases.. étrange..., juste comme piqure de rappel, quelqu'un saurait me dire les critères clés qui font que l'ont détérmine qu'une classe sera publique ou privée? :oops: