Je suis tout à fait un débutant dans les tests de code, et j'étais une assertputain 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é privateautrement, à les défaire readonly, à faire des privateméthodes à la protected virtualplace, 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.