Je ne suis pas d'accord avec la philosophie "vous ne devriez vous intéresser qu'aux tests de l'interface externe". C'est un peu comme si l'on disait qu'un atelier de réparation de voitures ne devait faire des tests que pour voir si les roues tournent. Oui, en fin de compte, je suis intéressé par le comportement externe, mais j'aime que mes propres tests internes, privés, soient un peu plus spécifiques et précis. Oui, si je procède à un remaniement, il se peut que je doive changer certains des tests, mais à moins qu'il ne s'agisse d'un remaniement massif, je ne devrai en changer que quelques-uns et le fait que les autres tests internes (inchangés) fonctionnent toujours est un excellent indicateur du succès du remaniement.
Vous pouvez essayer de couvrir tous les cas internes en utilisant uniquement l'interface publique et, théoriquement, il est possible de tester chaque méthode interne (ou du moins toutes celles qui comptent) entièrement en utilisant l'interface publique, mais vous risquez de devoir vous mettre sur la tête pour y parvenir et la connexion entre les cas de test exécutés via l'interface publique et la partie interne de la solution qu'ils sont censés tester peut être difficile ou impossible à discerner. Le fait d'avoir des tests pointus et individuels qui garantissent que la machinerie interne fonctionne correctement vaut bien les changements de test mineurs qui surviennent avec le remaniement - du moins, c'est ce que j'ai constaté. Si vous devez apporter d'énormes changements à vos tests à chaque refactoring, alors peut-être que cela n'a pas de sens, mais dans ce cas, vous devriez peut-être repenser entièrement votre conception. Une bonne conception devrait être suffisamment flexible pour permettre la plupart des changements sans avoir à procéder à des remaniements massifs.
3 votes
J'ai peut-être raté quelque chose, ou peut-être que c'est juste que cette question est, eh bien...
pre-historic
en termes d'années Internet, mais le test unitaire des méthodes privées est maintenant à la fois facile et direct, avec Visual Studio produisant les classes d'accès nécessaires lorsque cela est nécessaire et pré-remplissant la logique des tests avec des extraits très proches de ce que l'on peut souhaiter pour des tests fonctionnels simples. Voir par exemple. msdn.microsoft.com/fr/us/library/ms184807%28VS.90%29.aspx5 votes
Cela semble être une copie conforme de stackoverflow.com/questions/34571/ .
0 votes
L'auteur de la question n'utilise peut-être pas Visual Studio
6 votes
Ne faites pas de tests unitaires sur les internes : blog.ploeh.dk/2015/09/22/unit-testing-internals
1 votes
Duplicata possible de Comment tester une classe qui a des méthodes, des champs ou des classes internes privés ?
0 votes
Les accesseurs privés sont dépréciés dans Visual Studio à partir de 2012.
0 votes
La question n'est pas de savoir s'il DEVRAIT tester une méthode privée, mais plutôt de savoir COMMENT il peut tester une méthode privée. Je ne discute pas des mérites de l'une ou l'autre méthode. Il peut y avoir une raison légitime pour laquelle il veut faire cela, comme tous ceux qui viennent ici pour chercher une solution.
0 votes
Poste connexe - Test unitaire des méthodes privées en C#