Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O IntelliTest explora seu código .NET para gerar dados de teste e um conjunto de testes de unidade. Para cada instrução no código, uma entrada de teste é gerada que executará essa instrução. Uma análise de caso é realizada para cada ramificação condicional no código. Por exemplo, if instruções, asserções e todas as operações que podem gerar exceções são analisadas. Esta análise é usada para gerar dados de teste para um teste de unidade parametrizado para cada um dos seus métodos, criando testes de unidade com alta cobertura de código. Pense nisso como um teste difuso inteligente que reduz as entradas e os casos de teste para o que executa todas as suas ramificações lógicas e verifica exceções.
Ao executar o IntelliTest, você pode ver facilmente quais testes estão falhando e adicionar qualquer código necessário para corrigi-los. Você pode selecionar qual dos testes gerados salvar em um projeto de teste para fornecer um conjunto de regressão. À medida que você altera o código, execute novamente o IntelliTest para manter os testes gerados sincronizados com as alterações de código.
Observação
O IntelliTest foi preterido no Visual Studio 2026. No Visual Studio 2022, o IntelliTest é suportado apenas para o .NET Framework e está limitado ao Visual Studio Enterprise. O suporte para o .NET 6 foi limitado apenas a uma versão de pré-visualização.
Observação
No Visual Studio 2022, o IntelliTest é suportado apenas para o .NET Framework e está limitado ao Visual Studio Enterprise. O suporte para o .NET 6 foi limitado apenas a uma versão de pré-visualização.
Disponibilidade e extensões
Os comandos de menu Criar IntelliTest e Executar IntelliTest :
Estão disponíveis somente na Enterprise Edition do Visual Studio.
Suporta apenas código C# destinado ao .NET Framework.
São extensíveis e suportam testes emissores nos formatos MSTest, MSTest V2, NUnit e xUnit.
Não suporta a configuração x64 (requer a versão de pré-visualização).
Explorar: Use o IntelliTest para explorar seu código e gerar testes de unidade
Para gerar testes de unidade, seus tipos devem ser públicos.
Abra sua solução no Visual Studio e, em seguida, abra o arquivo de classe que tem métodos que você deseja testar.
Clique com o botão direito do mouse em um método e escolha Executar IntelliTest para gerar testes de unidade para o código em seu método.
O IntelliTest executa o seu código muitas vezes com entradas diferentes. Cada execução é representada na tabela que mostra os dados de teste de entrada e a saída ou exceção resultante.
Para gerar testes de unidade para todos os métodos públicos em uma classe, basta clicar com o botão direito do mouse na classe em vez de um método específico e, em seguida, escolher Executar IntelliTest. Utilize a lista suspensa na janela Resultados da Exploração para exibir os testes de unidade e os dados de entrada para cada método na classe.
Para testes aprovados, verifique se os resultados relatados na coluna de resultados correspondem às suas expectativas para o código. Para testes que falham, corrija seu código conforme apropriado. Em seguida, execute novamente o IntelliTest para validar as correções.
Persistir: guarde os testes de unidade como uma suite de regressão
Selecione as linhas de dados que você deseja salvar com o teste de unidade parametrizado em um projeto de teste.
Você pode exibir o projeto de teste e o teste de unidade parametrizado que foi criado - os testes de unidade individuais, correspondentes a cada uma das linhas, são salvos no arquivo de .g.cs no projeto de teste e um teste de unidade parametrizado é salvo em seu arquivo de .cs correspondente. Você pode executar os testes de unidade e exibir os resultados do Gerenciador de Testes da mesma forma que faria para qualquer teste de unidade criado manualmente.
Quaisquer referências necessárias também são adicionadas ao projeto de teste.
Se o código do método for alterado, execute novamente o IntelliTest para manter os testes de unidade sincronizados com as alterações.
Assist: Use o IntelliTest para focar a exploração de código
Se tiver um código mais complexo, o IntelliTest ajuda-o a concentrar a exploração do seu código. Por exemplo, se você tiver um método que tenha uma interface como parâmetro e houver mais de uma classe que implemente essa interface, o IntelliTest descobrirá essas classes e relatará um aviso.
Veja os avisos para decidir o que quer fazer.
Depois de investigar o código e entender o que deseja testar, você pode corrigir o aviso para escolher quais classes usar para testar a interface.
Essa opção é adicionada ao arquivo PexAssemblyInfo.cs .
[assembly: PexUseType(typeof(Camera))]Agora você pode executar novamente o IntelliTest para gerar um teste de unidade parametrizado e dados de teste apenas usando a classe que você corrigiu.
Especificar: Use o IntelliTest para validar as propriedades de correção especificadas no código
Especifique a relação geral entre entradas e saídas que você deseja que os testes de unidade gerados validem. Esta especificação é encapsulada em um método que se parece com um método de teste, mas é universalmente quantificado. Este é o método de teste de unidade parametrizado, e quaisquer asserções que você fizer devem manter para todos os valores de entrada possíveis que o IntelliTest pode gerar.
Perguntas e Respostas
P: Você pode usar o IntelliTest para código não gerenciado?
A: Não, o IntelliTest só funciona com código gerido.
P: Quando é que um teste gerado passa ou falha?
A: Passa como qualquer outro teste de unidade se não ocorrerem exceções. Ele falhará se qualquer asserção falhar ou se o código em teste lançar uma exceção não tratada.
Se você tiver um teste que pode ser aprovado se determinadas exceções forem lançadas, você pode definir um dos seguintes atributos com base em seus requisitos no método de teste, classe de teste ou nível de montagem:
PexAllowedExceptionAttribute
PexAllowedExceptionFromTypeAttribute
PexAllowedExceptionFromTypeUnderTestAttribute
PexAllowedExceptionFromAssemblyAttribute
P: Posso adicionar suposições ao teste de unidade parametrizado?
Um: Sim, utilize suposições para especificar quais dados de teste não são necessários em um teste unitário para um método específico. Use a PexAssume classe para adicionar suposições. Por exemplo, você pode adicionar uma suposição de que a lengths variável não é nula assim:
PexAssume.IsNotNull(lengths);
Se você adicionar uma suposição e executar novamente o IntelliTest, os dados de teste que não forem mais relevantes serão removidos.
P: Posso adicionar asserções ao teste de unidade parametrizado?
Um: Sim, o IntelliTest verificará se o que está a afirmar na sua afirmação está de facto correto quando executa os testes de unidade. Use a PexAssert classe ou a API de asserção que vem com a estrutura de teste para adicionar asserções. Por exemplo, você pode adicionar uma asserção de que duas variáveis são iguais.
PexAssert.AreEqual(a, b);
Se adicionar uma asserção e executar novamente o IntelliTest, ele verificará se a sua asserção é válida e o teste falhará se não for.
P: Posso gerar testes de unidade parametrizados sem executar o IntelliTest primeiro?
Um: Sim, clique com o botão direito do rato na classe ou método e, em seguida, selecione Criar IntelliTest.
Aceite o formato padrão para gerar seus testes ou altere como seu projeto e testes são nomeados. Você pode criar um novo projeto de teste ou salvar seus testes em um projeto existente.
P: Posso usar outras estruturas de teste de unidade com o IntelliTest?
Um: Sim, siga estas etapas para encontrar e instalar outros frameworks. As extensões de estrutura de teste também estão disponíveis no Visual Studio Marketplace, por exemplo, NUnit Test Generator.
Depois de reiniciar o Visual Studio e reabrir a solução, clique com o botão direito do mouse na classe ou método e escolha Criar IntelliTest. Selecione sua estrutura instalada aqui:
Em seguida, execute o IntelliTest para gerar testes de unidade individuais em seus arquivos .g.cs correspondentes.
P: Posso saber mais sobre como os testes são gerados?
Um: Sim, para obter uma visão geral de alto nível, leia esta postagem no blog.