He visto muchos métodos locos para acceder a variables privadas cuando se prueban las unidades. Lo más alucinante que he visto es #define private public
.Pruebas unitarias con -fno-access-control
Sin embargo, nunca he visto a nadie que sugiera desactivar las variables privadas en el nivel del compilador. Siempre había supuesto que no podrías. Me he quejado a muchos desarrolladores de que las pruebas unitarias serían mucho más sencillas si pudieras decirle al compilador que retroceda para este único archivo.
Luego tropiezo con la opción del compilador gcc -fno-access-control. Es obviamente la manera perfecta de probar la unidad. Tus archivos fuente originales no han sido modificados, no hay amigos inyectados solo para la prueba de la unidad, no se recompila con la extraña magia del preprocesador. Simplemente haga clic en el interruptor 'no access control' cuando compile las pruebas de su unidad.
¿Echo de menos algo? ¿Es esta la unidad que prueba la bala de plata? Espero que sea?
La única desventaja que veo es la naturaleza específica de gcc de la técnica. Sin embargo, supongo que MSVS tiene una bandera similar.
¿Has probado esta técnica? ¿Funciona de hecho? – UncleZeiv
Recopilé un caso de prueba simple antes de publicar la pregunta. De hecho, funciona No lo he probado con ningún proyecto de la vida real o grande, pero supongo que se adapta perfectamente. –
'-fno-access-control' no funciona con herencia privada/protegida. Estoy atascado con '# define's. – Xeverous