Estoy escribiendo pruebas de unidad para algunos de mis códigos y me he encontrado con un objeto con una pequeña interfaz expuesta pero estructuras internas complejas ya que cada método expuesto se ejecuta a través de un gran número de funciones internas incluyendo dependencias en el estado del objeto . Esto hace que los métodos en la interfaz externa sean bastante difíciles de probar por unidad.¿Deben probarse las unidades no públicas y cómo?
Mi pregunta inicial es, ¿debería apuntar a probar estas funciones internas también, ya que son más simples y, por lo tanto, más fáciles de escribir las pruebas? Mi instinto me dice que sí, lo que me lleva a la pregunta de seguimiento de si es así, ¿cómo haré esto en C++?
Las opciones que he propuesto son cambiar estas funciones internas de privadas a protegidas y usar una clase de amigo o una herencia para acceder a estas funciones internas. ¿Es este el mejor/único método de hacerlo preservando parte de la semántica de mantener ocultos los métodos internos?
Posible duplicado de [¿Cómo puedo probar una clase que tiene métodos privados, campos o clases internas?] (Https://stackoverflow.com/questions/34571/how-do-i-test-a-class-that -has-private-methods-fields-or-inner-classes) – Raedwald