configuração Atributo InternalsVisibleTo
Seu código pode conter classes, interfaces ou estruturas que têm o internal qualificador de acesso a dados no Visual C#, ou o Friend qualificador de acesso a dados no Visual Basic. Tipos têm neste qualificador para uma das duas razões:
Você tiver marcado explicitamente-los sistema autônomo internos.
Por padrão, classes de nível superior, interfaces ou structs não ter nenhum qualificador de acesso explícitas são tratados sistema autônomo internos.
Por padrão, particular, internal e amigo elementos em seu código sob teste não são visíveis para o seu código de teste, mas você ainda poderá testá-las.Para obter informações sobre como testar métodos privados, consulte Como: Testar a particular método.
Teste de elementos com o qualificador de acesso interno
Quando você gera métodos de teste de unidade para o código que contém tipos internos, você pode ver o Adicionar atributo InternalsVisibleTo caixa de diálogo.Ele contém a seguinte pergunta Sim-não:
Você optou por gerar testes para um tipo que está marcado sistema autônomo Friend ou Internal. Adicione o atributo InternalsVisibleTo ao projeto < nome projeto >?
Se o seu projeto de fonte tiver assinatura de nome forte habilitado, será necessário também ativar a assinatura de seu projeto de teste. Se você não fizer isso, você receberá um erro de compilação.
Nesta mensagem, < nome projeto > refere-se ao projeto que contém seu code-under-teste.Se você responder Sim, o assembly do código sob teste é marcado com o atributo InternalsVisibleTo, que torna tipos internos no assembly visível para seu projeto de teste.Isso permite que você executar testes de unidade desses tipos internos.
Observação: |
---|
O atributo InternalsVisibleTo pode ocorrer de duas formas.Especifica a forma simples o assembly ao qual deseja conceder acesso.O formulário mais complexo também inclui uma chave pública que é usada para assinatura de nome forte.Para obter mais informações, consulte a seção a seguir. |
Se você responder não, sistema autônomo tipos internos no seu conjunto de código sob teste são tratados sistema autônomo se eles têm o private modificador de acesso. Nesse caso, o procedimento de geração de teste cria um particular acesso ou, que permite que o assembly de teste para acesso desses tipos internos e particulares.Você verá o assembly do acessador particular na pasta Test referências do seu projeto de teste.
InternalsVisibleTo ou uma particular acessador: Qual usar?
Você pode usar um assembly do acessador particular para acessar membros privados e membros internos.Se o código under teste possui membros internos, mas não há membros particulares, é melhor usar o atributo InternalVisibleTo em seu código under teste e deixarem a criação de um assembly do acessador particular.Mas, se seu código possui membros particulares e internos que você deseja testar, use o acessador particular, pois ele fornece acesso a ambos.Para obter mais informações, consulte Usar acessadores particular.
Requisito de assinatura de nome forte
O segundo parágrafo do Adicionar atributo InternalsVisibleTocaixa de diálogo contém informações sobre assinatura de nome forte.Isso significa que criar sua solução produzirá um erro do compilador, a menos que você habilitar corretamente a assinatura de nome forte:
Se assinatura de nome forte é ativada para seu conjunto de código sob teste, ele deve ser habilitado para o assembly de teste.Nesse caso, você deve usar o formulário assinado do InternalsVisibleTo atributo.Por exemplo:
[InternalsVisibleTo(“OtherAssembly, PublicKey=12435234fsdaf;l457fwi248ew843872r892r”)]
Se não estiver habilitado assinatura de nome forte do seu conjunto de código sob teste, não é necessário estar ativada para o assembly de teste.Nesse caso, você pode usar o formulário não assinado do InternalsVisibleTo atributo:
[InternalsVisibleTo(“OtherAssembly”)]
Observação: I f você clicar em y es na Adicionar atributo InternalsVisibleTo caixa de diálogo , Visual Studio Adiciona a forma simples da InternalsVisibleTo atributo, o formulário sem a chave pública.
Também é instrumentar um assembly de código sob teste para habilitar a coleta de dados de cobertura de código afeta a assinatura de nome forte.Para obter mais informações, consulte Instrumentação e Re-Signing Assemblies.
Consulte também
Tarefas
Como: Testar a particular método