Hace poco noté que no se respetaba agregar [TestInitialize] a un método protegido en un ensamblado .NET, pero si hacía público el método, el corredor de prueba de la unidad lo llamaba (Resharper en este caso). He notado esto varias veces en el pasado con métodos de prueba.
Técnicamente hablando, es tan fácil reflexionar sobre un método privado como un método público. De hecho, la reflexión es un método empleado para probar métodos privados.
Entonces, ¿por qué necesito hacer públicos todos los métodos de prueba de mi unidad?
.net
unit-testing
Justin Dearing
fuente
fuente
setAccessible
que puede ser bloqueado por un SecurityManager personalizadoRespuestas:
Debe probar lo que la clase lo hace , no cómo lo hace.
En lo que respecta al "mundo exterior", eso es lo que la clase ponga a disposición del público; su marco de prueba está haciendo la misma suposición.
Al probar algo "menos" que Público, está profundizando en la implementación interna de la clase, que es una mala idea.
fuente
Como regla general, es mejor acceder solo a métodos públicos: cuando crea una clase, también está creando el contrato sobre qué otras clases deberían acceder a su código. Entonces, la respuesta es más probable solo porque es una convención.
fuente