¿Cuándo es apropiado evitar la encapsulación en pruebas unitarias?

Recientemente me he dado cuenta decaja blanca de powermock funcionalidad (En resumen, le permite probar directamente métodos privados o modificar miembros privados directamente de las pruebas unitarias, ¡mientras los mantiene privados!)

Sé que hay algunos marcos de pensamiento que desaprueban que la unidad pruebe cualquier cosa que no sean métodos visibles, pero maldita sea, a veces solo quieres una prueba simple para asegurarte de que un método de ayuda de nivel profundo esté haciendo lo que se supone que debe hacer ... pasar por lo que podría ser una gran sobrecarga para preparar los parámetros y simulacros necesarios para que los métodos principales se filtren a su método ... y luego tiene que hacer magia para extraer los resultados de ese método interno. En resumen, probar algunas veces esos métodos internos requiere las pruebas unitarias más complejas y difíciles de seguir. (Y, para su información, nuestra compañía tiene una política de cobertura de prueba de unidad del 100%.Esos métodos deben ser probados!)

Soy consciente de queuna metodología Es paracambio métodos de acceso para permitir pruebas unitarias (por ejemplo, cambiar deprivate aprotected, pero Powermock Whitebox permite una prueba directa sin cambiar el código fuente.

Aun así, mamá siempre decía: "Solo porque puedas, no significa que debas".

¿Es apropiado probar métodos internos como este? Si es así, ¿cuál es la regla general que debo usar?

Respuestas a la pregunta(1)

Su respuesta a la pregunta