Compartilhar via


Teste aplicativos C++ existentes com o Explorer de teste de unidade

Recomendamos que você modifique, antes que um aplicativo existente, você certifica que tem uma boa tinta com testes de unidade.Isso oferece a confiança que suas alterações não introduziram erro.Se o aplicativo ainda não tiver testes de unidade, você pode adicioná-los usando as técnicas demonstradas em este tópico.Este tópico descreve como adicionar testes de unidade para o código existente do Visual C++ em Microsoft Visual Studio 2012, começando com decidir como testar seu código, e na criação, gravar, e finalmente, executando os testes.

Decidindo como testar seu código

Abra o projeto existente C++, e inspecionar-lo para decidir como você deseja adicionar os testes de unidade.Você pode usar algumas ferramentas modelagem, que ajudam a consulte as dependências no código, e ajuda você a entender como as partes interagem.Para mais informações, consulte Visualizando e entendendo o código.

Recomendamos que você separar as alterações em tarefas pequenas.Antes de cada alteração pequena, testes de unidade de gravação para aspectos do comportamento que permanecerá o mesmo.Esses testes continuarão a passar depois que você fez a alteração.Por exemplo, se você pretende modificar uma função de classificação de modo que classifica uma lista de pessoas por sobrenome em vez do nome, então você pode escrever um teste de unidade que verifica que todos os nomes de entrada aparecem na saída.Depois que você fez a alteração, convém adicionar novos testes de unidade para o novo comportamento.

Se for prático, muitos ou todos os seus testes de unidade devem usar somente as funções que são exportadas.Mas se você está alterando apenas uma pequena parte do aplicativo inteiro, convém usar as funções que não sejam exportadas.Por exemplo, você pode querer que os testes que chamam funções internas, ou os testes que definem e obtém os valores de variáveis internas.

Há várias maneiras para testar o código do produto, dependendo se expõe as interfaces que você deseja testar.Escolha uma das seguintes maneiras:

  • Os testes de unidade usarão somente as funções que são exportadas de código no teste:
    Adicione um projeto separado de teste.Em o projeto de teste, adicione uma referência ao projeto no teste.
Vá para o procedimento Para criar um projeto de teste que faz referência ao projeto de código.
  • O código no teste é compilado como um arquivo .exe:
    Adicione um projeto separado de teste.Link para o arquivo de objeto de saída.

    Vá para o procedimento Para criar um projeto de teste que referencia o arquivo de código de objeto.

  • Os testes de unidade devem usar funções e dados particulares, e o código no teste pode ser compilado como uma biblioteca estático:
    Altere o projeto no teste de modo que ele seja compilado em um arquivo de .lib.Adicione um projeto separado de teste que referencia o projeto no teste.

    Essa abordagem tem a vantagem de permitir que os testes usar membros particulares, mas ainda mantém os testes em um projeto separado.Entretanto, ele pode não ser adequado para alguns aplicativos onde você deve ter uma biblioteca de link dinâmico (.dll).

    Vá para o procedimento Para alterar o código no teste a uma biblioteca static.

  • Os testes de unidade devem usar funções e dados particulares, e o código deve ser compilado como uma biblioteca de link dinâmico (DLL):
    Adicione testes de unidade no mesmo projeto que o código do produto.

    Vá para o procedimento Para adicionar testes de unidade no mesmo projeto.

Criando os testes

Para alterar o código no teste a uma biblioteca static

  • Se os testes devem usar os membros que não são exportados por um projeto no teste, e pelo projeto no teste são compilados como uma biblioteca dinâmico, consulte a converter a uma biblioteca estático.

    1. Em o solution Explorer, no menu de atalho do projeto no teste, escolha Propriedades.A janela propriedades de projeto é aberto.

    2. Escolha Propriedades de Configuração, Geral.

    3. Definir Tipo de configuração a Biblioteca static (.lib).

Continue com o procedimento Para criar um projeto de teste para funções exportadas.

Para referenciar funções exportadas de projeto de teste

  • Se um projeto no teste exportar as funções que você deseja testar, então você pode adicionar uma referência ao projeto de código de projeto de teste.

    1. Crie o projeto de teste de C++.

      • Em o menu de Arquivo , escolha Novo, Projeto, Visual C++,Testar, Projeto de teste de unidade C++.
    2. Em o solution Explorer, no menu de atalho do projeto de teste, escolha Referências.A janela propriedades de projeto é aberto.

    3. Selecione Propriedades Comuns, Estrutura e Referências, e então escolha o botão de Adicionar nova referência .

    4. ProjetosSelecione e em seguida, no projeto testado.

      Escolha o botão de Adicionar .

    5. Em as propriedades do projeto de teste, adicione o local do projeto no teste incluir pastas.

      Escolha Propriedades de Configuração, Diretórios VC++, inclua diretórios.

      Escolha Editarem seguida, adicione o diretório de cabeçalho de projeto no teste.

Vá para Escrevendo os testes de unidade.

Para vincular os testes para o objeto ou a arquivos de biblioteca

  • Se o código no teste não exportar as funções que você deseja testar, você pode adicionar a saída .obj ou arquivo de .lib as dependências do projeto de teste.

    1. Crie o projeto de teste de C++.

      • Em o menu de Arquivo , escolha Novo, Projeto, Visual C++,Testar, Projeto de teste de unidade C++.
    2. Em o solution Explorer, no menu de atalho do projeto de teste, escolha Propriedades.A janela propriedades de projeto é aberto.

    3. Escolha Propriedades de Configuração, Vinculador, Entrada, dependências adicionais.

      Escolha Editar, e adicione os nomes dos arquivos de .obj ou de .lib .Não use os nomes de caminho completo.

    4. Escolha Propriedades de Configuração, Vinculador, Geral, diretórios de biblioteca adicionais.

      Escolha Editar, e adicionar o caminho do diretório dos arquivos de .obj ou de .lib .O caminho é normalmente dentro da pasta de compilação do projeto no teste.

    5. Escolha Propriedades de Configuração, Diretórios VC++, inclua diretórios.

      Escolha Editarem seguida, adicione o diretório de cabeçalho de projeto no teste.

Vá para Escrevendo os testes de unidade.

Para adicionar testes de unidade no mesmo projeto

  1. Modifique as propriedades do projeto de código de produto para incluir os cabeçalhos e os arquivos da biblioteca que são necessários para testes de unidade.

    1. Em o solution Explorer, no menu de atalho do projeto no teste, escolha propriedades.A janela propriedades de projeto é aberto.

    2. Escolha Propriedades de Configuração, Diretórios VC++.

    3. Editar os diretórios incluindo de biblioteca:

      Inclua diretórios

      $(VCInstallDir)UnitTest\include;$(IncludePath)

      Diretórios de biblioteca

      $(VCInstallDir)UnitTest\lib;$(LibraryPath)

  2. Adicione o arquivo de testes de unidade de C++:

    • Em o solution Explorer, no menu de atalho do projeto, escolha Adicionar, Novo Item, e então escolha Testes de unidade C++.

Vá para Escrevendo os testes de unidade.

Escrevendo os testes de unidade

  1. Em cada arquivo de código de teste de unidade, adicione uma instrução de #include para os cabeçalhos de projeto no teste.

  2. Adicionar classes e métodos de teste para os arquivos de código de teste de unidade.Por exemplo:

    #include "stdafx.h"
    #include "CppUnitTest.h"
    #include "MyProjectUnderTest.h"
    using namespace Microsoft::VisualStudio::CppUnitTestFramework;
    namespace MyTest
    {
      TEST_CLASS(MyTests)
      {
      public:
          TEST_METHOD(MyTestMethod)
          {
              Assert::AreEqual(MyProject::Multiply(2,3), 6);
          }
      };
    }
    

Para mais informações, consulte Teste de código nativo com Explorer de teste de unidade.

Execute teste

  1. Em o menu de Modo de Visualização , escolha Outras Janelas, teste Explorer.

  2. Em o teste Explorer, escolha Executar todas.

Para mais informações, consulte Início rápido: desenvolvimento baseado em testes com o Gerenciador de Testes.