Gravar testes de unidade para C/C++ no Visual Studio
Você pode escrever e executar seus testes de unidade do C++ usando a janela do Gerenciador de Testes. Ele funciona da mesma forma que funciona para outras linguagens. Para mais informações sobre como usar o Test Explorer, consulte Executar testes de unidade com o Test Explorer.
Nota
Não há suporte para alguns recursos, como Live Unit Testing, Coded UI Tests e IntelliTest para C++.
O Visual Studio inclui estas estruturas de teste do C++ sem a necessidade de downloads adicionais:
- Estrutura de teste de unidade da Microsoft 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ê queira usar no Visual Studio. Um adaptador de teste integra testes de unidade à janela Gerenciador de Testes. Vários adaptadores que não são da Microsoft estão disponíveis no do Visual Studio Marketplace. Para obter mais informações, confira Instalar estruturas de teste de unidade.
Visual Studio 2017 e posterior (Professional e Enterprise)
Os projetos de teste de unidade do C++ dão suporte ao CodeLens .
Visual Studio 2017 e posterior (todas as edições)
O Adaptador do Google Test está incluído como componente padrão da carga de trabalho Desenvolvimento para área de trabalho com 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 no do Gerenciador de Soluções e escolha Adicionar>Novo Projeto no menu de atalho para adicionar o modelo de projeto. Ele também tem opções que você pode configurar usando Tools>Options. Para obter mais informações, consulte Como usar o Google Test no Visual Studio.
Boost.Test está incluído como componente padrão da carga de trabalho Desenvolvimento para área de trabalho com C++. Ele é integrado ao Gerenciador de Testes, mas atualmente não tem um modelo de projeto. Você deve configurá-lo manualmente. Para obter mais informações, consulte Como usar Boost.Test no Visual Studio.
O suporte para CTest está incluído no componente Ferramentas CMake para C++, que faz parte da carga de trabalho Desenvolvimento para desktop com C++. Para obter mais informações, consulte Como usar o CTest no Visual Studio.
Versões anteriores do Visual Studio
Você pode baixar as extensões do adaptador do Google Test e do Adaptador Boost.Test no Visual Studio Marketplace. Localize-os no adaptador de teste para Boost.Test e no adaptador de teste para Google Test.
Dica
Você também pode usar o comando barra "/" /tests
do Copilot 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, confira Uso de comandos de barra "/" no Copilot Chat.
Fluxo de trabalho de teste básico
As seções a seguir mostram as etapas básicas para começar a usar o teste de unidade do 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:
- Clique com o botão direito do mouse no nó Solução no Gerenciador de Soluções.
- No menu de contexto, escolha Adicionar>Novo Projeto.
- Defina Linguagem de programação como C++ e digite teste na caixa de pesquisa. A captura de tela a seguir mostra os projetos de teste que estão disponíveis quando os workloads Desktop Development with C++ e UWP Development são instalados:
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:
- Clique com o botão direito do mouse no nó Solução no Gerenciador de Soluções.
- No menu de contexto, escolha Adicionar>Novo Projeto.
- Defina Linguagem de programação como C++ e digite teste na caixa de pesquisa. A seguinte captura de tela mostra os projetos de teste que estão disponíveis quando o Desenvolvimento da Área de Trabalho com C++ e o Desenvolvimento de UWP são instalados:
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. Em do Gerenciador de Soluções, expanda seu projeto de teste. Clique com o botão direito do mouse em Referências e selecione Adicionar>Referência. Na caixa de diálogo Adicionar Referência, escolha os projetos que você deseja testar.
Vincular a arquivos de objeto ou biblioteca
Se o código de teste não exportar as funções que você deseja testar, adicione os arquivos de saída .obj
ou .lib
como dependências do projeto de teste. Para obter mais informações, confira Como vincular os testes aos arquivos de biblioteca ou objeto. Não inclua arquivos de objeto que tenham uma função main
ou outro ponto de entrada padrão, como wmain
, WinMain
ou DllMain
. Ao adicionar novos arquivos de origem ao 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 de teste de unidade .cpp
, 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.
Dica
Para evitar a necessidade de digitar o caminho completo em cada instrução include no arquivo de origem, adicione as pastas necessárias em Propriedades do Project>>C/C++>Geral>Diretórios de Inclusão Adicionais.
Gravar métodos de teste
Nota
Esta seção mostra a sintaxe do Microsoft Unit Testing Framework para C/C++. Para obter mais informações, confira referência da API Microsoft.VisualStudio.TestTools.CppUnitTestFramework.
Para obter a documentação do Google Test, consulte Google Test Primer. Quanto ao Boost.Test, confira Biblioteca do Boost Test: a estrutura de teste de unidade.
O arquivo .cpp
em seu projeto de teste tem uma classe 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 detectáveis na janela do Gerenciador de Testes.
TEST_CLASS e TEST_METHOD fazem parte do do Microsoft Native Test Framework. Gerenciador de Testes descobre métodos de teste em outras estruturas com suporte de maneira semelhante.
Um TEST_METHOD retorna nulo. 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, suponha que MyClass
tenha um construtor que usa 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 é aprovado ou falha. A classe Assert
contém muitos outros métodos para comparar os resultados esperados com os resultados reais.
É possível adicionar características aos métodos de teste a fim de especificar os proprietários do teste, a 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 Gerenciador de Testes.
Executar os testes
No menu de Teste, escolha Explorador de Testes. A ilustração a seguir mostra um projeto de teste antes de executar testes.
Nota
A integração do CTest com o Gerenciador de Testes ainda não está disponível. Execute testes CTest no menu principal do CMake.
Se algum dos testes estiver ausente da 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.
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. Depois que todos os testes são executados, a janela mostra os testes que foram aprovados e os que falharam.
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 abrir um menu pop-up. Escolha Depurar para percorrer a função em que ocorreu a falha.
Para obter mais informações sobre como usar do Gerenciador de Testes, consulte Executar testes de unidade com o Gerenciador de Testes.
Para obter mais informações sobre o teste de unidade, consulte Noções básicas de teste de unidade.
Ferramenta CodeLens
Visual Studio 2017 e posterior (edições Professional e Enterprise)
CodeLens permite ver 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 qualquer uma das seguintes maneiras:
- Edite e crie seu projeto de teste ou solução.
- Recompile seu projeto ou solução.
- Execute testes na janela do Gerenciador de Testes do.
Depois de inicializar o CodeLens, você poderá ver os ícones de status de teste acima de cada teste de unidade.
Escolha o ícone para obter mais informações ou para executar ou depurar o teste de unidade: