Usar acessadores particular

Como apenas os métodos na hierarquia de telefonar podem acessar métodos particular ou internos de código sob teste, métodos de teste exigem acessadores privados indiretamente chamar esse código de acesso restrito.

Um acessador particular é um assembly que contém implementações de sombra de cada método do assembly do código sob teste.Cada método na particular acessador é public e utiliza o nome do método correspondente no código sob teste.Chamar um método no acessador particular chama o método particular do código sob teste.Isso torna mais fácil obter acesso ao código que tenha o private qualificador de acesso.

Observação:

O acessador particular também oferece testa o acesso a variáveis particulares em seu código sob teste.

Um acessador particular é um assembly compilado na pasta de referências de teste no gerenciador de soluções.Ele tem o nome de <assembly_name>.private_accessor, onde <assembly_name> é o nome do assembly que está listado na suas propriedades de seu projeto.

Observação:

Para obter mais informações sobre como elementos de teste que tem o qualificador de acesso interno, consulte configuração Atributo InternalsVisibleTo.

Criando particular acessadores

Quando você gerar um teste de unidade para um método particular, Visual Studio cria automaticamente um acessador particular, a menos que o acessador particular já existe no projeto teste.

Compilar a solução faz com que as referências no acessador particular a ser atualizado.Portanto, depois de alterar seu código de produção, deve recompilar atualize seu acessador particular apropriadamente.

Para obter informações sobre como gerar um acessador particular, consulte Como: Testar a particular método.

Criando particular acessadores manualmente

Se não existir um acessador particular para o assembly em teste, um pode ser gerado sem gerar métodos de teste.

Para criar um acessador particular ou, para recriar um acessador particular que tenha sido excluído, clicar com o botão direito do mouse no código sob teste.Em seguida, clicar Criar particular acessador no menu de atalho e, em seguida, selecionar o projeto de teste nos quais se quer colocar o assembly particular-acessador.Observe que este item de menu não será exibida se não existir um projeto de teste na solução.

Observação:

Você também pode criar um particular acessador de um aviso de comando Por usando o divulgar utilitário.

Usar acessadores particular

Para teste código particular, você cria primeiro o acessador particular, conforme descrito em Como: Testar a particular método. O teste deve, em seguida, criar uma instância do objeto que será acesso seu método privado antes que ele executa seus etapas de teste.

Por exemplo, seu código de produção contém o seguinte método na classe BankAccount:

private void FreezeAccount()
{
    m_frozen = true;
}

O método de teste a seguir testa particular FreezeAccount() método. Para acessar o FreezeAccount() método, o método de teste deve primeiro criar o BankAccount_Accessor objeto no conjunto de módulos (assembly) de acessador particular. Isso é necessário porque BankAccount_Accessor contém a implementação de sombra de FreezeAccount(), o método que você deseja testar. O código a seguir, FreezeAccount() é chamado por meio da implementação de sombra de acessador particular.

O código de exemplo a seguir foi gerado automaticamente e, em seguida, editado pela pessoa que criou o teste.As declarações TODO indicam instruções no código de teste que devem ser concluídas manualmente antes do teste é executado.

[TestMethod()]
public void FreezeAccountTest()
{
    BankAccount_Accessor target = new BankAccount_Accessor("Mr. Bryan Walton", 11.99); // TODO: Initialize to an appropriate value
target.FreezeAccount(); 
    // Assert.Inconclusive("A method that does not return a value cannot be verified.");
    
    bool creditAccount = false; // False means account could be credited: Fail test. 
    // Try to credit account
    try
    {
        target.Credit(1.00); 
    }
    catch (System.Exception)
    {
        // Threw exception. FreezeAccount worked correctly: Pass test. 
    creditAccount = true;
    }
    
    // Assert fails if 'creditAccount' condition is false. Fail test.
    Assert.IsTrue(creditAccount, "Was able to credit account.");
}

Este exemplo é abordado em mais detalhes em Demonstra Passo a passo: Criando e executando testes de unidade.

Consulte também

Tarefas

Como: Testar a particular método