Usar o Microsoft Unit Testing Framework para C/C++ no Visual Studio

O Microsoft Unit Testing Framework para C/C++ está incluído por padrão na carga de trabalho Desenvolvimento de Área de Trabalho com C++.

Gravar testes de unidade em um projeto separado

Normalmente, o código de teste é executado no próprio projeto na mesma solução que o código que você deseja testar. Para instalar e configurar um novo projeto de teste, consulte Gravar testes de unidade para C/C++.

Para gravar testes de unidade no mesmo projeto

Em alguns casos, por exemplo, ao testar funções não exportadas em uma DLL, talvez você precise criar os testes no mesmo projeto que o programa que você está testando. Gravar testes de unidade no mesmo projeto:

  1. Modifique as propriedades do projeto para incluir os cabeçalhos e os arquivos de biblioteca necessários para os testes de unidade.

    1. No Gerenciador de Soluções, no menu de atalho do projeto em teste, selecione Propriedades. A janela de propriedades do projeto aparece.

    2. No diálogo Páginas de Propriedades, selecione Propriedades de Configuração>Diretórios VC++.

    3. Selecione a seta para baixo nas linhas a seguir e escolha <Editar>. Adicione estes caminhos:

      Diretório Propriedade
      Incluir Diretórios $(VCInstallDir)Auxiliary\VS\UnitTest\include
      Diretórios de Biblioteca $(VCInstallDir)Auxiliary\VS\UnitTest\lib
  2. Adicione um arquivo de teste de unidade C++:

    1. No Gerenciador de Soluções, clique com o botão direito do mouse no nó do projeto e escolha Adicionar>Novo Item.

    2. Na caixa de diálogo Adicionar Novo Item, selecione Arquivo C++ (.cpp), dê a ele um nome apropriado e escolha Adicionar.

Para vincular os testes aos arquivos de biblioteca ou objeto

Se o código em teste não exporta as funções que deseja testar, você pode adicionar o arquivo de saída .obj ou .lib às dependências do projeto de teste. Modifique as propriedades do projeto de teste para incluir os cabeçalhos e os arquivos de biblioteca ou de objeto necessários para os testes de unidade.

  1. No Gerenciador de Soluções, no menu de atalho do projeto de teste, selecione Propriedades. A janela de propriedades do projeto aparece.

  2. Selecione a página Propriedades de Configuração>Vinculador>Entrada e selecione Dependências Adicionais.

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

  3. Selecione a página Propriedades de Configuração>Vinculador>Geral e selecione Diretórios de Biblioteca Adicionais.

    Escolha Editare adicione o caminho do diretório dos arquivos .obj ou .lib. O caminho fica geralmente dentro da pasta de compilação do projeto em teste.

  4. Selecione a página Propriedades de Configuração>Diretórios VC++ e selecione Incluir Diretórios.

    Escolha Editare adicione o diretório de cabeçalho do projeto que está sendo testado.

Gravar os testes

Qualquer arquivo .cpp com classes de teste precisa incluir "CppUnitTest.h" e ter uma instrução using para using namespace Microsoft::VisualStudio::CppUnitTestFramework. O projeto de teste já está configurado para você. Uma definição de namespace e uma TEST_CLASS com um TEST_METHOD já estão incluídos para você começar. É possível modificar o nome do namespace e os nomes entre parênteses nas macros de classe e método.

A estrutura de teste define macros especiais para inicializar módulos de teste, classes e métodos e para limpeza de recursos após a conclusão dos testes. Essas macros geram código para ser executado antes de uma classe ou método serem acessados pela primeira vez e após a execução do último teste. Para saber mais, consulte Inicialização e limpeza.

Use os métodos estáticos na classe Assert para definir as condições de teste. Use a classe de Agente para gravar mensagens na Janela de Saída. Adicione atributos aos métodos de teste

Executar os testes

  1. No menu Teste, escolha Windows>Gerenciador de Testes.

  2. Caso nem todos os testes estejam visíveis na janela, crie o projeto de teste clicando com o botão direito no mouse no nó do Gerenciador de Soluções e escolhendo Criar ou Recompilar.

  3. No Gerenciador de Testes, escolha Executar Todos ou selecione os testes específicos que deseja executar. Clique com o botão direito do mouse para ver outras opções, incluindo a execução em modo de depuração com pontos de interrupção habilitados.

  4. Na Janela de Saída, escolha Testes no menu suspenso para exibir as mensagens gravadas pela classe Logger:

    C++ Output Window showing test messages

Definir as características para habilitar o agrupamento

É possível definir características nos métodos de teste que permitem categorizar e agrupar testes no Gerenciador de Testes. Para definir uma característica, use a macro TEST_METHOD_ATTRIBUTE. Por exemplo, para definir uma característica chamada de TEST_MY_TRAIT:

#define TEST_MY_TRAIT(traitValue) TEST_METHOD_ATTRIBUTE(L"MyTrait", traitValue)

Para usar a característica definida em seus testes de unidade:

BEGIN_TEST_METHOD_ATTRIBUTE(Method1)
    TEST_OWNER(L"OwnerName")
    TEST_PRIORITY(1)
    TEST_MY_TRAIT(L"thisTraitValue")
END_TEST_METHOD_ATTRIBUTE()

TEST_METHOD(Method1)
{
    Logger::WriteMessage("In Method1");
    Assert::AreEqual(0, 0);
}

Macros de atributo de característica do C++

As seguintes características predefinidas são encontradas em CppUnitTest.h. Para obter mais informações, confira A referência de API do Microsoft Unit Testing Framework para C++.

Macro Descrição
TEST_METHOD_ATTRIBUTE(attributeName, attributeValue) Use a macro TEST_METHOD_ATTRIBUTE para definir uma característica.
TEST_OWNER(ownerAlias) Use a característica de proprietário predefinida para especificar um proprietário do método de teste.
TEST_PRIORITY(priority) Use a característica de prioridade predefinida para atribuir prioridades relativas a seus métodos de teste.