Je suis tout à fait un débutant dans les tests de code, et j'étais une assert
putain avant. Une chose qui m'inquiète dans les tests unitaires est que cela vous oblige souvent à faire public
(ou au moins internal
) des champs qui auraient été private
autrement, à les défaire readonly
, à faire des private
méthodes à la protected virtual
place, etc ...
J'ai récemment découvert que vous pouvez éviter cela en utilisant des choses comme la classe PrivateObject pour accéder à n'importe quoi dans un objet via la réflexion. Mais cela rend vos tests moins maintenables (les choses échoueront à l'exécution plutôt qu'à la compilation, elles seront cassées par un simple renommage, c'est plus difficile à déboguer ...). Quelle est votre opinion à ce sujet ? Quelles sont les meilleures pratiques en matière de tests unitaires concernant la restriction d'accès?
edit: considérez par exemple que vous avez une classe avec un cache dans un fichier sur le disque, et dans vos tests vous voulez écrire en mémoire à la place.