Soy un principiante en las pruebas de código, y fui una assertprostituta antes. Una cosa que me preocupa en las pruebas unitarias es que a menudo requiere que usted haga public(o al menos internal) campos que de privateotro modo habrían sido , para eliminarlos readonly, crear privatemétodos protected virtual, etc.
Recientemente descubrí que puedes evitar esto usando cosas como la clase PrivateObject para acceder a cualquier cosa en un objeto a través de la reflexión. Pero esto hace que sus pruebas sean menos mantenibles (las cosas fallarán en la ejecución en lugar del tiempo de compilación, se romperá con un simple cambio de nombre, es más difícil de depurar ...). Qué opinas de esto ? ¿Cuáles son las mejores prácticas en pruebas unitarias con respecto a la restricción de acceso?
editar: considere, por ejemplo, que tiene una clase con un caché en un archivo en el disco, y en sus pruebas desea escribir en la memoria.