Anatomia de um teste de unidade

Quando você cria um teste de unidade, vários arquivos são adicionados à sua solução. Neste tópico, usaremos um exemplo de um teste de unidade para explorar arquivos mais comuns. O exemplo vem do tópico Demonstra Passo a passo: Criar e executar testes de unidade.

Partes de um arquivo de teste de unidade

Quando você cria um teste de unidade, um arquivo de teste de unidade separada é criado para cada classe que você está testando. Cada arquivo de teste de unidade contém um método de teste para cada método que você está testando. Neste exemplo, os métodos que estamos testando pertencem à mesma classe. Portanto, é apenas um arquivo de classe de teste: BankAccountTest.cs.

Seção superior do arquivo

A figura a seguir mostra as primeiras linhas do código, incluindo a referência aos namespaces, o TestClassAttributee o TestContext classe. Se desejar que os exemplos de código, consulte Explicação passo a passo.

Seção superior de um arquivo de teste de unidade de exemplo

  1. Microsoft.VisualStudio.TestTools.UnitTesting: Quando você cria um teste de unidade, uma referência ao namespace Microsoft.VisualStudio.TestTools.UnitTesting é adicionada ao seu projeto de teste e o namespace é incluído em um usando a instrução na parte superior do arquivo de teste de unidade. O espaço para nome tem muitas classes para ajudá-lo em seus testes de unidade incluindo:

    • Declarar classes que você pode usar para verificar as condições em testes de unidade

    • Atributos de limpeza e de inicialização para executar código antes ou após a execução de testes de unidade para garantir específicos e final estado

    • O atributo ExpectedException para verificar que um determinado tipo de exceção é lançado durante a execução de teste de unidade

    • A classe TestContext, que armazena as informações fornecidas para testes de unidade, como, por exemplo, a conexão de dados para testes baseados em dados e informações necessárias para executar testes de unidade para o ASP.NET Web Services

    Para obter mais informações, consulte Microsoft.VisualStudio.TestTools.UnitTesting.

  2. TestClassAttribute: Quando você cria um teste de unidade de TestClassAttribute está incluído no arquivo de teste para indicar que essa classe em particular pode conter métodos marcados com o [TestMethod()] atributo. Sem o TestClassAttribute, os métodos de teste são ignorados.

    Uma classe de teste pode herdar os métodos de outra classe de teste está no mesmo assembly. Isso significa que você pode criar métodos de teste em uma classe de teste de base e, em seguida, usar esses métodos em classes derivadas de teste.

    Para obter mais informações, consulte TestClassAttribute.

  3. TestContext: Quando você criar testes de unidade, uma variável chamada testContextInstance é incluído para cada classe de teste. As propriedades da TestContext classe armazenar informações sobre o Test de atual. Para obter mais informações, consulte TestContext.

Seção inferior do arquivo

A figura a seguir mostra a última parte do código que é gerado o passo a passo, o que inclui os atributos de teste adicional"" seção, o TestMethod atributo e a lógica do método, que inclui uma instrução Assert.

Seção inferior de um arquivo de teste de unidade de exemplo

  1. Atributos de teste adicionais: Expanda essa seção para mostrar os métodos comentadas que podem ser usados para incluir a limpeza e inicialização usando os seguintes atributos:

    1. [ClassInitialize()] ClassInitialize de uso para executar código antes de executar o primeiro teste na classe.

    2. [ClassCleanUp()] ClassCleanup de uso para executar código após tem executado a todos os testes em uma classe.

    3. [TestInitialize ()] TestInitialize de uso para executar código antes de executar cada teste.

    4. [TestCleanup ()] TestCleanup de uso para executar o código depois de cada teste foi executado.

      Criar métodos marcados com um [ClassInitialize()] ou o atributo [TestInitialize ()] para preparar aspectos do ambiente no qual sua unidade de teste será executado. O objetivo é estabelecer um estado conhecido para executar seu teste de unidade. Por exemplo, você pode usar [ClassInitialize()] ou o método [TestInitialize ()] para copiar, alterar ou criar determinados arquivos de dados que o teste usará.

      Criar métodos marcados com um [ClassCleanup()] ou o atributo [TestCleanUp {}] para retornar o ambiente para um estado conhecido depois que um teste foi executado. Isso pode significar a exclusão de arquivos nas pastas ou o retorno de um banco de dados para um estado conhecido. Um exemplo disso é redefinir um banco de dados de inventário para um estado inicial após o teste de um método que é usado em um aplicativo de entrada de pedido.

      ObservaçãoObservação

      É recomendável que você use código limpo em uma [TestCleanup ()] ou [ClassCleanup()] método e não em um método finalizador. Exceções lançadas a partir de um método finalizador não irão ser interceptadas e podem causar resultados inesperados.

  2. TestMethodAttribute: Quando você cria um teste de unidade, cada método de teste de unidade é marcado com o [TestMethod()] atributo. Sem esse atributo não é executado um teste de unidade. Para obter mais informações sobre o TestMethod atributo consulte TestMethodAttribute.

  3. Lógica do método de teste, incluindo uma instrução Assert: Cada teste de unidade gerado tem variáveis vazias e um espaço reservado a instrução Assert. O espaço reservado do padrão instrução Assert é geralmente o Assert.Inconclusive instrução. Para fazer o teste significativo, você deve inicializar as variáveis e substitua o espaço reservado com uma instrução de declaração adequada.

    Neste exemplo deixamos o CreditTest método de teste de unidade como foi gerado, incluindo suas instruções de TODO. No entanto, podemos inicializar as variáveis e substituído a instrução Assert na DebitTest Testar método. Declarações TODO atuam como lembretes que deseja inicializar estas linhas de código.

    ObservaçãoObservação

    O conteúdo de seus métodos de teste pode variar, dependendo do tipo de teste de unidade e a natureza do método que está sendo testado.

Uma observação sobre convenções de nomenclatura: O Visual Studio Ferramentas de teste usam convenções de nomeação quando os testes de unidade são gerados. Por exemplo, um arquivo de teste de unidade é nomeado concatenando a palavra "Teste" com o nome do arquivo que contém o código que você está testando; em nosso exemplo é "BankAccountTest.cs". Nomes dos métodos de teste e classes de teste são gerados usando padrões também. Você pode alterar esses padrões na Test Generation Settings caixa de diálogo, que pode ser aberto clicando em configurações na Create Unit Tests caixa de diálogo.

Itens adicionados à solução

Esta seção aborda os arquivos diferente do arquivo de teste de unidade são gerados no Demonstra Passo a passo: Criar e executar testes de unidade.

ObservaçãoObservação

Quais arquivos são criados por padrão quando você gerar um teste de unidade depende das configurações de projeto de teste. Para alterar essas configurações, clique em Ferramentase em seguida, clique em Opções. No Opções diálogo caixa, expanda Ferramentas de teste e, em seguida, clique em O projeto de teste.

A figura a seguir mostra o Solution Explorer após um teste de unidade foi criado para o nosso projeto de exemplo.

O Gerenciador de Soluções para um projeto de teste de unidade de exemplo

  1. Itens de solução: Itens de solução contém dois arquivos:

    • Local.testsettings: Estas configurações controlam como os testes de local que não coletar dados de diagnóstico são executados.

    • Bank.vsmdi: Este arquivo contém informações sobre listas de teste que estão presentes na solução e preenche a janela do Editor de lista de teste.

    • TraceAndTestImpact.testsettings: Estas configurações controlam como local testa que coletar um conjunto específico de dados de diagnóstico são executados.

  2. Testar o projeto: Contém os arquivos restantes, são necessários para os testes de unidade.

  3. Propriedades do projeto de teste: Contém o arquivo AssemblyInfo. cs, que fornece opções de compilação do projeto.

  4. Referências de projeto de teste: Contém as referências que são necessários para executar os testes de unidade. Quando você gera um teste de unidade de código existente, as referências necessárias estão incluídas. No entanto, você pode adicionar referências para personalizar seus testes.

  5. Arquivo de teste de unidade: Este é o arquivo de teste de unidade descrito na primeira seção deste tópico. Para cada classe que você está testando, um arquivo de teste de unidade separada é criado no projeto de teste. Neste exemplo, os dois métodos que estamos testando pertencem à mesma classe. Portanto, é apenas um arquivo de classe de teste, BankAccountTest.cs.

Consulte também

Referência

Microsoft.VisualStudio.TestTools.UnitTesting

Conceitos

Criando e executando testes de unidade para o código existente

Testes de unidade e C++

Testes de unidade para métodos genéricos

Testes de unidade ASP.NET Web Services

Testes de unidade para Private, Internal e os métodos de amigo