Uso de declaraciones de "amigos" para pruebas unitarias. ¿Mala idea?

[Por supuesto, la pregunta no está restringida a una implementación específica de "amigo", siéntase libre de señalar los detalles de implementación si es relevante]

Leyendo las preguntas sin respuesta, me topé con elInternalsVisibleTo atributo:

Especifica que los tipos que normalmente solo son visibles dentro del ensamblaje actual son visibles para otro ensamblaje.

losGuía de programación de C # enMSDN tiene una secciónAsambleas de amigos que describe cómo usar el atributo para permitir el uso deinternal métodos y tipos a otro conjunto.

Me pregunto si sería una buena idea usar esto para crear una interfaz "oculta" para instrumentar una biblioteca para que la use el ensamblaje de prueba de la unidad. Parece aumentar el acoplamiento de forma masiva en ambas direcciones (código de prueba en el ensamblado de producción, conocimiento interno íntimo sobre el ensamblaje de producción en el código de prueba), pero por otro lado podría ayudar a crear pruebas detalladas sin saturar la interfaz pública.

¿Cuál es su experiencia con el uso de declaraciones de amigos durante las pruebas? ¿Fue tu bala de plata o comenzó la Marcha de la Muerte?

Respuestas a la pregunta(5)

Su respuesta a la pregunta