Compartilhar via


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

Conceitos

Usar acessadores particular