[Por supuesto, la cuestión no se limita a una aplicación "amigo" específica, no dude embargo señalar implementaciones específicas si es relevante]Uso de las declaraciones "friend" para pruebas unitarias. ¿Mala idea?
Lectura a través de las preguntas sin respuesta, yo nos topamos con el atributo InternalsVisibleTo
:
Especifica que tipos que son ordinariamente visible sólo dentro del conjunto actual son visibles para otro conjunto.
El C# Programming Guide en MSDN tiene una sección Friend Assemblies que describe cómo utilizar el atributo para permitir el uso de internal
métodos y tipos a otro conjunto.
Me pregunto si sería una buena idea utilizar esto para crear una interfaz "oculta" para instrumentar una biblioteca para el uso del conjunto de prueba de la unidad. Parece aumentar el acoplamiento de forma masiva en ambas direcciones (código de prueba en el conjunto 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 su Silver Bullet o comenzó la Marcha de la Muerte?
¡Gracias por la sugerencia de una buena denominación! No estaba (todavía) al tanto de esto, pero como creo que todas mis asambleas deben ser llamadas con fuerza para su lanzamiento, no veo esto como un problema real. –