Usando declarações de "amigo" para teste de unidade. Péssima ideia?

[Obviamente, a questão não se restringe a uma implementação específica de "amigos"; sinta-se à vontade para apontar detalhes da implementação, se relevantes]

Lendo as perguntas não respondidas, me deparei com oInternalsVisibleTo atributo:

Especifica que os tipos que normalmente são visíveis apenas na montagem atual são visíveis para outra montagem.

oGuia de Programação em C # emMSDN tem uma seçãoAssembléias de Amigos descrevendo como usar o atributo para permitir o uso deinternal métodos e tipos para outra montagem.

Gostaria de saber se seria uma boa ideia usar isso para criar uma interface "oculta" para instrumentar uma biblioteca para uso pelo conjunto de teste de unidade. Parece aumentar enormemente o acoplamento em ambas as direções (código de teste no conjunto de produção, conhecimento interno íntimo sobre o conjunto de produção no código de teste), mas por outro lado, pode ajudar na criação de testes refinados sem sobrecarregar a interface pública.

Qual é a sua experiência com o uso de declarações de amigos ao testar? Foi sua bala de prata ou começou a marcha da morte?

questionAnswers(5)

yourAnswerToTheQuestion