Executar testes de unidade com o Gerenciador de Testes

Use o Gerenciador de Testes para executar testes de unidade do Visual Studio ou projetos de teste de unidade de terceiros. Você também pode usar o Gerenciador de Testes para agrupar os testes em categorias, filtrar a lista de testes, criar, salvar e executar playlists de testes. Você também pode usar o Gerenciador de Testes para depurar testes de unidade e, no Visual Studio Enterprise, para analisar a cobertura de código.

O Gerenciador de Testes pode executar testes de vários projetos de teste em uma solução e de classes de teste que fazem parte dos projetos de código de produção. Projetos de teste podem usar estruturas de teste de unidade diferente. Quando o código em teste é escrito para o .NET, o projeto de teste pode ser escrito em qualquer linguagem que também seja direcionada ao .NET, independentemente da linguagem do código de destino. Projetos de código C/C++ nativos devem ser testados usando uma estrutura de teste de unidade C++.

Criar seu projeto de teste

Se você ainda não tiver um projeto de teste configurado em sua solução do Visual Studio, primeiro crie e compile um projeto de teste.

O Visual Studio instala as estruturas de teste de unidade da Microsoft para código gerenciado e nativo. No entanto, o Gerenciador de Testes também pode executar qualquer estrutura de teste de unidade que implementou um adaptador de Gerenciador de Testes. Para obter mais informações sobre como instalar estruturas de teste de unidade de terceiros, consulte Instalar estruturas de teste de unidade de terceiros

Executar testes de unidade no Gerenciador de Testes

Quando você cria o projeto de teste, os testes são exibidos no Gerenciador de Testes. Se o Gerenciador de Testes não estiver visível, escolha Teste no menu do Visual Studio e, em seguida, selecione Gerenciador de Testes (ou pressione Ctrl + E, T).

Test Explorer

Test Explorer

À medida que você executa, grava e executa novamente os testes, o Gerenciador de Testes exibe os resultados em um agrupamento padrão de Projeto, Namespace e Classe. Você pode alterar a forma como o Gerenciador de Testes agrupa seus testes.

Você pode executar a maior parte do trabalho de encontrar, organizar e executar testes usando a barra de ferramentas do Gerenciador de Testes.

Run tests from the Test Explorer toolbar

Run tests from the Test Explorer toolbar

Executar testes

Você pode executar todos os testes na solução, todos os testes em um grupo ou um conjunto de testes que você selecionar. Realize um dos seguintes procedimentos:

  • Para executar todos os testes de uma solução, escolha o ícone Executar Todos (ou pressione Ctrl + R, V).

  • Para executar todos os testes de um grupo padrão, escolha o ícone Executar e, em seguida, escolha o grupo no menu.

  • Selecione os testes individuais que deseja executar, abra o menu com um clique do botão direito do mouse no teste selecionado e escolha Executar Testes Selecionados (ou pressione Ctrl + R, T).

  • Se os testes individuais não tiverem dependências que os impeçam de serem executados em qualquer ordem, ative a execução de teste em paralelo no menu de configurações da barra de ferramentas. Isso pode reduzir consideravelmente o tempo necessário para executar todos os testes.

Executar testes depois de cada compilação

Para executar os testes de unidade após cada build local, abra o ícone de configurações na barra de ferramentas do Gerenciador de Testes e selecione Executar Testes após Build.

Exibir resultados do teste

Conforme você executa, grava e executa novamente os testes, o Gerenciador de Testes exibe os resultados em grupos Testes com falha, Testes Aprovados, Testes Ignorados e Testes Não Executados. O painel de detalhes na parte inferior ou lateral do Gerenciador de Testes exibe um resumo da execução de teste.

Exibir detalhes do teste

Para exibir os detalhes de um teste individual, selecione o teste.

Test execution details

Test execution details

O painel de detalhes de teste exibe as seguintes informações:

  • O nome do arquivo de origem e o número de linha do método de teste.

  • O status do teste.

  • O tempo decorrido que o método de teste levou para ser executado.

Se o teste falhar, o painel de detalhes também exibe:

  • A mensagem retornada pela estrutura de teste de unidade para o teste.

  • O rastreamento de pilha no momento em que o teste falhou.

Exibir o código-fonte de um método de teste

Para exibir o código-fonte de um método de teste no editor do Visual Studio, selecione o teste e escolha Abrir Teste no menu do botão direito do mouse (ou pressione F12).

Agrupar e filtrar a lista de testes

O Gerenciador de Testes permite agrupar os testes em categorias predefinidas. A maioria das estruturas de teste de unidade executados no Gerenciador de Testes permitem que você defina suas próprias categorias e pares de valor/categoria para agrupar os testes. Você também pode filtrar a lista de testes por correspondência de cadeias de caracteres em relação a propriedades de teste.

Agrupar testes na lista de testes

O Gerenciador de Testes permite agrupar os testes em uma hierarquia. O agrupamento de hierarquia padrão é Projeto, Namespace e, em seguida, Classe. Para alterar a maneira como os testes são organizados, escolha o botão Agrupar Por e oTest Explorer group button e selecione um novo critério de agrupamento.

Group tests by category in Test Explorer

Você pode definir seus próprios níveis de hierarquia e de grupo por Estado e, em seguida, Classe, por exemplo, selecionando as opções Agrupar por em sua ordem preferida.

Screenshot of the Visual Studio Test Explorer showing a test hierarchy in one pane and the Group By menu in the other with the Class and State options checked.

O Gerenciador de Testes permite agrupar os testes em uma hierarquia. O agrupamento de hierarquia padrão é Projeto, Namespace e, em seguida, Classe. Para alterar a maneira como os testes são organizados, escolha o botão Agrupar Por e oTest Explorer group button e selecione um novo critério de agrupamento.

Group tests by category in Test Explorer

Você pode definir seus próprios níveis de hierarquia e de grupo por Estado e, em seguida, Classe, por exemplo, selecionando as opções Agrupar por em sua ordem preferida.

Screenshot of the Visual Studio Test Explorer showing a test hierarchy in one pane and the Group By menu in the other with the Class and State options checked.

Grupos de Gerenciador de Testes

Grupo Descrição
Duration Agrupa os teste de acordo com o tempo de execução: Rápido, Médio e Lento.
State Agrupa os testes de acordo com os resultados da execução: Testes com falha, Testes ignorados, Testes aprovados, Não executado.
Estrutura de Destino Agrupa testes pela estrutura de seus projetos de destino
Namespace Agrupa testes pelo namespace contido.
Projeto Agrupa testes pelo projeto contido.
Classe Agrupa testes pela classe contida.

Características

Uma característica é geralmente um par de nome/valor de categoria, mas também pode ser uma única categoria. Características podem ser atribuídas aos métodos que são identificados como um método de teste pela estrutura de teste de unidade. Uma estrutura de teste de unidade pode definir categorias de característica. Você pode adicionar valores para as categorias de característica para definir seus próprios pares de nome/valor de categoria. A sintaxe para especificar valores e categorias de característica é definida pela estrutura de teste de unidade.

Características na Estrutura de Teste da Unidade Microsoft para código gerenciado

Na estrutura de teste de unidade da Microsoft para aplicativos gerenciados, você define um par nome/valor de característica no atributo TestPropertyAttribute. A estrutura de teste também contém essas características predefinidas:

Característica Descrição
OwnerAttribute A categoria do proprietário é definida pela estrutura de teste de unidade e exige que você forneça um valor de cadeia de caracteres do proprietário.
PriorityAttribute A categoria Prioridade é definida pela estrutura de teste de unidade e exige que você forneça um valor inteiro da prioridade.
TestCategoryAttribute O atributo TestCategory permite especificar a categoria de um teste de unidade.
TestPropertyAttribute O atributo TestProperty permite que você defina o par de categoria/valor da característica.

Características na Estrutura de Teste da Unidade Microsoft para C++

Consulte Como usar o Microsoft Unit Testing Framework para C++.

Criar playlists personalizadas

É possível criar e salvar uma lista de teste que você deseje executar ou exibir como um grupo. Quando você seleciona uma playlist, os testes da lista são exibidos em uma nova guia do Gerenciador de Testes. Você pode adicionar um teste a mais de uma playlist.

Para criar uma lista de reprodução, escolha um ou mais testes no Gerenciador de Testes. No menu de clique com o botão direito, escolha Adicionar à Playlist>Nova Playlist.

Create a playlist

A playlist é aberta em uma nova guia do Gerenciador de Testes. Você pode usar essa playlist uma vez e descartá-la ou pode clicar no botão Salvar na barra de ferramentas da janela de playlist e selecionar um nome e local para salvá-la.

Playlist opens in separate test explorer tab

Para criar uma lista de reprodução, escolha um ou mais testes no Gerenciador de Testes. No menu de clique com o botão direito, escolha Adicionar à Playlist>Nova Playlist.

Para abrir uma playlist, escolha o ícone da playlist na barra de ferramentas do Visual Studio e selecione no menu um arquivo de playlist salvo anteriormente.

Para editar uma playlist, você pode clicar com o botão direito do mouse em qualquer teste e usar as opções de menu para adicioná-la ou removê-la de uma playlist.

A partir do Visual Studio 2019 versão 16.7, você pode escolher o botão Editar na barra de ferramentas. Caixas de seleção serão exibidas ao lado de seus testes mostrando quais testes estão incluídos e excluídos da playlist. Edite os grupos conforme desejado.

Edit Playlist button

Você também pode marcar ou desmarcar as caixas dos grupos pai na hierarquia. Essa ação cria uma playlist dinâmica que sempre atualiza a playlist com base nos testes que estão nesse grupo. Por exemplo, se você colocar uma marca de seleção ao lado de uma classe, qualquer teste adicionado dessa classe se tornará parte da playlist. Se você excluir um teste dessa classe, ele será removido da playlist. Saiba mais sobre as regras salvando a playlist com o botão Salvar na barra de ferramentas e abrindo o arquivo .playlist criado em seu disco. Esse arquivo lista todas as regras e testes individuais que compõem uma playlist.

Playlist xml file

Se você quiser criar uma playlist para características, use o formato a seguir para MSTest.

<Playlist Version="2.0">
	<Rule Name="Includes" Match="Any">
		<Property Name="Trait" Value="SchemaUpdateBasic" />
	</Rule>
</Playlist>

Use o formato a seguir para xUnit. Verifique se há um espaço entre o nome de TestCategory e o [Value].

<Playlist Version="2.0">
  <Rule Name="Includes" Match="Any">
    <Rule Match="All">
      <Property Name="Solution" />
        <Rule Match="Any">
            <Property Name="Trait" Value="TestCategory [Value]" />
	    </Rule>
	</Rule>
  </Rule>
</Playlist>

É possível criar e salvar uma lista de teste que você deseje executar ou exibir como um grupo. Quando você seleciona uma playlist, os testes da lista são exibidos em uma nova guia do Gerenciador de Testes. Você pode adicionar um teste a mais de uma playlist.

Para criar uma lista de reprodução, escolha um ou mais testes no Gerenciador de Testes. No menu de clique com o botão direito, escolha Adicionar à Playlist>Nova Playlist.

Create a playlist

A playlist é aberta em uma nova guia do Gerenciador de Testes. Você pode usar essa playlist uma vez e descartá-la ou pode clicar no botão Salvar na barra de ferramentas da janela de playlist e selecionar um nome e local para salvá-la.

Playlist opens in separate test explorer tab

Para criar uma lista de reprodução, escolha um ou mais testes no Gerenciador de Testes. No menu de clique com o botão direito, escolha Adicionar à Playlist>Nova Playlist.

Para abrir uma playlist, escolha o ícone da playlist na barra de ferramentas do Visual Studio e selecione no menu um arquivo de playlist salvo anteriormente.

Para editar uma playlist, você pode clicar com o botão direito do mouse em qualquer teste e usar as opções de menu para adicioná-la ou removê-la de uma playlist.

A partir do Visual Studio 2019 versão 16.7, você pode escolher o botão Editar na barra de ferramentas. Caixas de seleção serão exibidas ao lado de seus testes mostrando quais testes estão incluídos e excluídos da playlist. Edite os grupos conforme desejado.

Edit Playlist button

Você também pode marcar ou desmarcar as caixas dos grupos pai na hierarquia. Essa ação cria uma playlist dinâmica que sempre atualiza a playlist com base nos testes que estão nesse grupo. Por exemplo, se você colocar uma marca de seleção ao lado de uma classe, qualquer teste adicionado dessa classe se tornará parte da playlist. Se você excluir um teste dessa classe, ele será removido da playlist. Saiba mais sobre as regras salvando a playlist com o botão Salvar na barra de ferramentas e abrindo o arquivo .playlist criado em seu disco. Esse arquivo lista todas as regras e testes individuais que compõem uma playlist.

Playlist xml file

Se você quiser criar uma playlist para características, use o formato a seguir para MSTest.

<Playlist Version="2.0">
	<Rule Name="Includes" Match="Any">
		<Property Name="Trait" Value="SchemaUpdateBasic" />
	</Rule>
</Playlist>

Use o formato a seguir para xUnit. Verifique se há um espaço entre o nome de TestCategory e o [Value].

<Playlist Version="2.0">
  <Rule Name="Includes" Match="Any">
    <Rule Match="All">
      <Property Name="Solution" />
        <Rule Match="Any">
            <Property Name="Trait" Value="TestCategory [Value]" />
	    </Rule>
	</Rule>
  </Rule>
</Playlist>

Colunas do Gerenciador de Testes

Os grupos também estão disponíveis como colunas no Gerenciador de Testes, com a Característica, Rastreamento de Pilha, Mensagem de Erro e Nome Totalmente Qualificado. A maioria das colunas não fica visível por padrão, e você pode personalizar quais colunas verá e a ordem de exibição.

Screenshot of the Visual Studio Test Explorer showing a menu with Columns selected and a sub-menu with Duration, Traits, and Error Message selected.

Filtrar, classificar e reorganizar colunas de testes

É possível filtrar, classificar e reorganizar as colunas.

  • Para filtrar para características específicas, clique no ícone de filtro na parte superior da coluna Características.

    Column filter

  • Para alterar a ordem das colunas, clique no cabeçalho de uma coluna e arraste-o para a esquerda ou para a direita.

  • Para classificar uma coluna, clique no cabeçalho dessa coluna. Nem todas as colunas podem ser classificadas. Faça também a classificação por uma coluna secundária mantendo a tecla Shift pressionada e clicando em um cabeçalho de coluna adicional.

    Column sort

Colunas do Gerenciador de Testes

Os grupos também estão disponíveis como colunas no Gerenciador de Testes, com a Característica, Rastreamento de Pilha, Mensagem de Erro e Nome Totalmente Qualificado. A maioria das colunas não fica visível por padrão, e você pode personalizar quais colunas verá e a ordem de exibição.

Screenshot of the Visual Studio Test Explorer showing a menu with Columns selected and a sub-menu with Duration, Traits, and Error Message selected.

Filtrar, classificar e reorganizar colunas de testes

É possível filtrar, classificar e reorganizar as colunas.

  • Para filtrar para características específicas, clique no ícone de filtro na parte superior da coluna Características.

    Column filter

  • Para alterar a ordem das colunas, clique no cabeçalho de uma coluna e arraste-o para a esquerda ou para a direita.

  • Para classificar uma coluna, clique no cabeçalho dessa coluna. Nem todas as colunas podem ser classificadas. Faça também a classificação por uma coluna secundária mantendo a tecla Shift pressionada e clicando em um cabeçalho de coluna adicional.

    Column sort

Pesquisar e filtrar a lista de testes

Você também pode usar os filtros de pesquisa do Gerenciador de Testes para limitar os métodos de testes nos projetos que você exibe e executa.

Quando você digita uma cadeia de caracteres na caixa de pesquisa do Gerenciador de Testes e escolhe Enter, a lista de testes é filtrada para exibir somente os testes cujos nomes totalmente qualificados contêm a cadeia de caracteres.

Para filtrar por um critério diferente:

  1. Abra a lista suspensa à direita da caixa de pesquisa.

  2. Escolha um novo critério.

  3. Insira o valor do filtro entre aspas. Caso deseje pesquisar uma correspondência exata na cadeia de caracteres em vez de uma correspondência que contenha um dos nomes, use um sinal de igual (=) em vez dos dois-pontos (:).

Filter tests in Test Explorer

Filter tests in Test Explorer

Observação

As pesquisas não diferenciam maiúsculas de minúsculas e correspondem a cadeia especificada para qualquer parte do valor de critérios.

Qualificador Descrição
State Procura os nomes de categoria do Gerenciador de Testes para encontrar correspondências: testes com falha, testes ignorados, testes aprovados.
Características Procura categoria de característica e valor para correspondência. A sintaxe para especificar valores e categorias de característica é definida pela estrutura de teste de unidade.
Nome Totalmente Qualificado Pesquisa o nome totalmente qualificado de namespaces de teste, classes e métodos para encontrar correspondências.
Projeto Procura os nomes de projeto de teste para correspondências.
Estrutura de Destino Pesquisa as estruturas de teste para encontrar correspondências.
Namespace Pesquisa os namespaces de teste para encontrar correspondências.
Classe Pesquisa os nomes de classes de teste para encontrar correspondências.

Para excluir um subconjunto dos resultados de um filtro, use a seguinte sintaxe:

FilterName:"Criteria" -FilterName:"SubsetCriteria"

Por exemplo, FullName:"MyClass" - FullName:"PerfTest" retorna todos os testes que incluem "MyClass" em seu nome, exceto os testes que também incluem "PerfTest" em seu nome.

Analisar a cobertura de código de teste de unidade

É possível determinar a quantidade do código de produto que realmente está sendo testada por seus testes de unidade com a ferramenta de cobertura de código do Visual Studio que está disponível na edição Enterprise do Visual Studio. Você pode executar a cobertura de código em testes selecionados ou em todos os testes em uma solução.

Para executar a cobertura de código para métodos de teste em uma solução:

  • Clique com o botão direito do mouse no Gerenciador de Testes e selecione Analisar Cobertura de Código dos Testes selecionados

A janela Resultados da Cobertura de Código exibe o percentual dos blocos de código de produto que foram exercidos por linha, função, classe, namespace e módulo.

Para obter mais informações, confira Usar a cobertura de código para determinar quanto do código está sendo testado.

Atalhos de teste

Os testes podem ser executados no Gerenciador de Testes clicando com o botão direito do mouse em um teste do editor de código e selecionando Executar teste ou usando os Atalhos padrão do Gerenciador de Testes no Visual Studio. Alguns dos atalhos são baseados em contexto. Ou seja, eles executam, depuram ou definem testes com base na posição do cursor no editor de código. Se o cursor estiver dentro de um método de teste, esse método de teste será executado. Se o cursor estiver no nível de classe, todos os testes na classe serão executados. O mesmo vale para o nível do namespace.

Comandos frequentes Atalhos do teclado
TestExplorer.DebugAllTestsInContext Ctrl+R, Ctrl+T
TestExplorer.RunAllTestsInContext Ctrl+R, T
TestExplorer.RunAllTests Ctrl+R, A
TestExplorer.RepeatLastRun Ctrl+R, L

Observação

Não é possível executar um teste em uma classe abstrata, porque os testes são apenas definidos nas classes abstratas e não instanciados. Para executar testes em classes abstratas, crie uma classe que deriva da classe abstrata.

Testar indicação de áudio

O Gerenciador de Testes pode reproduzir um som quando a execução de teste for concluída. São dois sons: um para indicar que a execução de teste foi realizada com êxito e todos os testes foram aprovados e um segundo som que indica que a execução de teste foi concluída mas pelo menos um teste falhou. Você pode configurar esses sons na caixa de diálogo de sons padrão do Windows 11. Esse recurso está disponível a partir do Visual Studio 2019 Atualização 16.9 Versão Prévia 3.

  1. Abra a caixa de diálogo de sons padrão do Windows 11.
  2. Navegue até a guia Sons.
  3. Localize a categoria Microsoft Visual Studio. Escolha os sons para Execução de teste bem sucedida ou Execução de teste falhou para selecionar os sons predefinidos ou navegar até seu próprio arquivo de áudio.
    Windows 11 sound dialog