[Bien sûr, la question ne se limite pas à une mise en œuvre « ami » spécifique, ne hésitez pas que souligner des détails de mise en œuvre le cas échéant]Utiliser les déclarations "friend" pour les tests unitaires. Mauvaise idée?
En lisant les questions sans réponse, je suis tombé sur l'attribut InternalsVisibleTo
:
Spécifie que les types qui sont ordinairement visible que dans le ensemble courant sont visibles à un autre ensemble.
Le C# Programming Guide sur MSDN a une section Friend Assemblies décrivant comment utiliser l'attribut pour permettre l'utilisation des méthodes et types internal
à un autre ensemble. Je me demande si ce serait une bonne idée d'utiliser ceci pour créer une interface "cachée" pour instrumentation d'une bibliothèque à utiliser par l'ensemble de test unitaire. Il semble augmenter massivement le couplage dans les deux sens (code de test dans l'assemblage de production, connaissance interne intime de l'assemblage de production dans le code de test), mais d'un autre côté, il peut aider à créer des tests fins sans encombrer l'interface publique.
Quelle est votre expérience d'utilisation des déclarations d'amis lors des tests? Était-ce votre Silver Bullet, ou a-t-elle commencé la Death March?
Merci pour le conseil sur la dénomination forte! Je n'étais pas (encore) conscient de cela, mais comme je pense que toutes mes assemblées doivent être fortement nommées pour être publiées, je ne vois pas cela comme un vrai problème. –