Partilhar via


Escrever testes de unidade para C/C++ no Visual Studio

Você pode escrever e executar seus testes de unidade C++ usando a janela Test Explorer. Funciona tal como funciona para outras línguas. Para obter mais informações sobre como usar o Test Explorer, consulte Executar testes de unidade com o Test Explorer.

Observação

Alguns recursos, como Live Unit Testing, Coded UI Tests e IntelliTest não são suportados para C++.

O Visual Studio inclui estas estruturas de teste C++ sem necessidade de downloads extras:

  • Microsoft Unit Testing Framework para C++
  • Teste do Google
  • Boost.Test
  • CTest

Você pode usar as estruturas instaladas ou escrever seu próprio adaptador de teste para qualquer estrutura que você deseja usar no Visual Studio. Um adaptador de teste integra testes de unidade com a janela Test Explorer. Vários adaptadores que não são da Microsoft estão disponíveis no Visual Studio Marketplace. Para obter mais informações, consulte Instalar estruturas de teste de unidade.

  • Visual Studio 2017 e posterior (Professional e Enterprise)

    Projetos de teste de unidade C++ suportam CodeLens.

  • Visual Studio 2017 e posterior (todas as edições)

    • do Google Test Adapter está incluído como um componente padrão do desenvolvimento do Desktop com carga de trabalho C++. Ele tem um modelo de projeto que você pode adicionar a uma solução. Clique com o botão direito do mouse no nó da solução em Gerenciador de Soluções e escolha AdicionarNovo Projeto no menu de atalho para adicionar o modelo de projeto. Ele também tem opções que você pode configurar usando Ferramentas>Opções. Para obter mais informações, consulte Como usar o teste do Google no Visual Studio.

    • Boost.Test está incluído como um componente padrão do conjunto de desenvolvimento Desenvolvimento de Desktop com C++. Ele está integrado ao Test Explorer, mas atualmente não tem um modelo de projeto. Você deve configurá-lo manualmente. Para obter mais informações, consulte Como usar o Boost.Test no Visual Studio.

    • suporte a CTest está incluído no componente de ferramentas C++ CMake , que faz parte da carga de trabalho de desenvolvimento para ambiente de trabalho com C++ . Para obter mais informações, consulte Como usar CTest no Visual Studio.

  • Versões anteriores do Visual Studio

    Você pode baixar o adaptador de teste do Google e as extensões do adaptador Boost.Test no Visual Studio Marketplace. Encontre-os em adaptador de teste para Boost.Test e adaptador de teste para Google Test.

Dica

Você também pode usar o comando Copilot /tests slash para gerar testes de unidade a partir do código. Por exemplo, você pode digitar /tests using Boost framework para gerar testes Boost.Test. Para obter mais informações, consulte Usar comandos de barra no Copilot Chat.

Fluxo de trabalho de teste básico

As seções a seguir mostram as etapas básicas para você começar a usar o teste de unidade C++. A configuração básica é semelhante para as estruturas de teste da Microsoft e do Google. Boost.Test requer que você crie manualmente um projeto de teste.

Criar um projeto de teste no Visual Studio 2022

Defina e execute testes de unidade dentro de um ou mais projetos de teste . Um projeto de teste cria um aplicativo separado que chama o código em seu executável e relata seu comportamento. Crie projetos de teste na mesma solução que o código que você deseja testar.

Para adicionar um novo projeto de teste a uma solução existente:

  1. Clique com o botão direito do mouse no nó Solução em Gerenciador de Soluções.
  2. No menu de contexto, escolha Adicionar>Novo Projeto.
  3. Mude Language para C++ e digite teste na caixa de pesquisa. A captura de ecrã a seguir mostra os projetos de teste que estão disponíveis quando o Desktop Development with C++ e o workload UWP Development estão instalados:

Captura de tela mostra a janela Adicionar um novo projeto com C++ selecionado no Visual Studio 2022.

Criar um projeto de teste no Visual Studio 2019

Defina e execute testes dentro de um ou mais projetos de teste. Crie os projetos na mesma solução que o código que você deseja testar.

Para adicionar um novo projeto de teste a uma solução existente:

  1. Clique com o botão direito do mouse no nó Solução em Gerenciador de Soluções.
  2. No menu de contexto, escolha Adicionar>Novo Projeto.
  3. Defina Language como C++ e digite de teste na caixa de pesquisa. A captura de ecrã a seguir mostra os projetos de teste que estão disponíveis quando as tarefas de Desktop Development with C++ e de UWP Development estão instaladas:

Captura de tela mostra a janela Adicionar um novo projeto com C++ selecionado no Visual Studio 2019.

Criar referências a outros projetos na solução

Para habilitar o acesso às funções no projeto em teste, adicione uma referência ao projeto em seu projeto de teste. No Gerenciador de Soluções , expanda seu projeto de teste. Clique com o botão direito em Referências e, em seguida, selecione Adicionar Referência>. Na caixa de diálogo Adicionar Referência, escolha os projetos que deseja testar.

Captura de tela mostra a caixa de diálogo Adicionar Referência no Visual Studio 2022.

Se o código de teste não exportar as funções que você deseja testar, adicione os arquivos de .obj ou .lib de saída às dependências do projeto de teste. Para mais informações, consulte sobre como vincular os testes aos arquivos de objeto ou de biblioteca. Não inclua arquivos de objeto que tenham uma função main ou outro ponto de entrada padrão, como wmain, WinMainou DllMain. Quando você adiciona novos arquivos de origem ao seu projeto, atualize as dependências do projeto de teste para incluir os arquivos de objeto correspondentes.

Adicionar diretivas #include para arquivos de cabeçalho

No arquivo .cpp de teste de unidade, adicione uma diretiva #include para quaisquer arquivos de cabeçalho que declarem os tipos e funções que você deseja testar. Digite #include "e, em seguida, o IntelliSense é ativado para ajudá-lo a escolher. Repita para mais cabeçalhos.

Captura de tela mostra o Gerenciador de Soluções com uma instrução #include com o IntelliSense destacando um arquivo de cabeçalho no Visual Studio 2022.

Dica

Para evitar ter que digitar o caminho completo em cada instrução include no arquivo de origem, adicione as pastas necessárias em Project>Properties>C/C++>General>Additional Include Directories.

Escrever métodos de teste

Observação

Esta seção mostra a sintaxe do Microsoft Unit Testing Framework para C/C++. Para obter mais informações, consulte referência da API Microsoft.VisualStudio.TestTools.CppUnitTestFramework.

Para obter a documentação do Google Test, consulte Google Test primer. Para o Boost.Test, consulte a Biblioteca de Teste Boost : A estrutura de teste de unidade.

O arquivo .cpp em seu projeto de teste tem uma classe de stub e um método definidos para você. Eles mostram um exemplo de como escrever código de teste. As assinaturas usam as macros TEST_CLASS e TEST_METHOD, que tornam os métodos detetáveis na janela do Test Explorer.

Captura de tela mostra uma classe e um método de stub usando as macros TEST_CLASS e TEST_METHOD no Visual Studio 2022.

Captura de tela mostra uma classe de stub e um método usando as macros TEST_CLASS e TEST_METHOD no Visual Studio 2019.

TEST_CLASS e TEST_METHOD fazem parte do Microsoft Native Test Framework. Test Explorer descobre métodos de teste em outras estruturas suportadas de maneira semelhante.

Um TEST_METHOD não retorna valor. Para produzir um resultado de teste, use os métodos estáticos na classe Assert para testar os resultados reais em relação aos resultados esperados. No exemplo a seguir, assuma que MyClass tem um construtor que recebe um std::string. Este exemplo mostra como você pode testar se o construtor inicializa a classe da maneira esperada:

TEST_METHOD(TestClassInit)
{
    std::string name = "Bill";
    MyClass mc(name);
    Assert::AreEqual(name, mc.GetName());
}

No exemplo anterior, o resultado da chamada Assert::AreEqual determina se o teste passa ou falha. A classe Assert contém muitos outros métodos para comparar os resultados esperados com os resultados reais.

Você pode adicionar atributos aos métodos de teste para especificar proprietários de teste, prioridade e outras informações. Em seguida, você pode usar esses valores para classificar e agrupar testes no Gerenciador de Testes. Para obter mais informações, consulte Executar testes de unidade com o Test Explorer.

Executar os testes

  1. No menu de Teste, escolha Explorador de Teste. A ilustração a seguir mostra um projeto de teste antes de executar testes.

    Captura de tela mostra o Test Explorer antes de executar testes no Visual Studio 2022.

    Captura de tela mostra o Test Explorer antes de executar testes no Visual Studio 2019.

    Observação

    A integração do CTest com o Test Explorer ainda não está disponível. Execute testes CTest a partir do menu principal do CMake.

  2. Se algum dos seus testes estiver faltando na janela, crie o projeto de teste clicando com o botão direito do mouse em seu nó no Gerenciador de Soluções e escolhendo Build ou Rebuild.

  3. Em Test Explorer, escolha Executar Tudoou selecione os testes específicos que deseja executar. Clique com o botão direito do rato num teste para outras opções, incluindo a execução no modo de depuração com pontos de paragem ativados. Depois de todos os testes serem executados, a janela mostra os testes que passaram e os que falharam.

    Captura de tela mostra o Gerenciador de Testes depois que os testes são executados no Visual Studio 2022.

    Captura de tela mostra o Test Explorer depois que os testes são executados no Visual Studio 2019.

Para testes com falha, a mensagem exibe detalhes que ajudam a diagnosticar a causa. Clique com o botão direito do mouse no teste com falha para obter um menu pop-up. Escolha Depuração para passar pela função onde ocorreu a falha.

Para obter mais informações sobre como usar o Test Explorer, consulte Executar testes de unidade com o Test Explorer.

Para obter mais informações sobre testes de unidade, consulte Noções básicas de teste de unidade.

Usar CodeLens

Visual Studio 2017 e posterior (edições Professional e Enterprise)

CodeLens permite que você veja rapidamente o status de um teste de unidade sem sair do editor de código.

Inicialize o CodeLens para um projeto de teste de unidade C++ de uma das seguintes maneiras:

  • Edite e construa seu projeto ou solução de teste.
  • Reconstrua seu projeto ou solução.
  • Execute testes a partir da janela Test Explorer.

Depois de inicializar o CodeLens, é possível ver os ícones de estado do teste acima de cada teste de unidade.

Captura de tela mostra os ícones do C++ CodeLens no Visual Studio 2019.

Escolha o ícone para obter mais informações ou para executar ou depurar o teste de unidade:

Captura de tela mostra o ícone C++ CodeLens depois de selecioná-lo para obter detalhes no Visual Studio 2022.