Execução de teste com Recarga Dinâmica

Execuções de teste no Visual Studio envolvem a compilação do projeto para atualizar os binários em disco antes de usar Testar Plataforma para executar testes. O tempo de build dentro do Visual Studio pode variar dependendo do tipo de alterações feitas no código. Para soluções maiores, os builds podem ser a parte mais cara da execução de teste. No Visual Studio 2022 e posteriores, a execução de teste com recarga dinâmica pode ser habilitada para acelerar a execução do teste ignorando builds para cenários com suporte.

O que tem suporte?

  • Projetos de C# e VB direcionados ao .NET 6.0 e posteriores
  • Projetos de teste criados para a configuração DEBUG
  • Visual Studio 2022 e posteriores

Habilitar a execução de teste com Recarga Dinâmica

Habilite esse recurso escolhendo Teste>Opções>" (Experimental) Habilitar Execuções de Teste de Recarga Dinâmica para projetos de teste de C# e VB direcionados ao .NET 6 e posteriores". Screenshot of the Enable Hot Reloaded Test Runs button on the Visual Studio Test Options page. When this is selected, tests execution will use hot reload for supported scenarios

Por que é Experimental?

Essa é uma nova maneira de execução de teste em que alteramos um caminho amplamente usado para validar o código. Também esperamos que a experiência do usuário em torno desse recurso seja alterada à medida que recebemos mais comentários dos usuários. Por esses dois motivos, rotulamos o recurso como "experimental".

Como ele funciona

Depois que a opção for habilitada, o Gerenciador de Testes usará automaticamente a execução de teste com recarga dinâmica quando possível. Se uma recarga dinâmica não for possível, ele voltará para o comportamento regular de compilar e executar testes. Como um usuário que executa testes, você não precisa fazer nenhuma alteração em seu fluxo de trabalho (ou seja, continue editando código e executando testes).

Nos bastidores, estamos usando a mesma infraestrutura de Editar e Continuar que existe na recém-lançada experiência de Recarga Dinâmica para editar código C#/VB em runtime para determinar as alterações feitas. Por esse motivo, usamos a recarga dinâmica somente quando não há "edições grosseiras"; nesse caso, voltamos a compilar os testes antes de executá-los. Para obter mais detalhes sobre as edições com suporte, leia a Documentação sobre Editar e Continuar

Quanto a velocidade da execução do teste aumentará?

Há muitas variáveis que entram em jogo ao estimar quanto tempo esse recurso economizará. Por exemplo:

  • Quanto tempo a compilação do projeto leva.
  • Que tipo de edição foi feita.
  • Qual é o tamanho do arquivo em que a edição foi feita.
  • Onde a edição foi feita (se era um projeto folha ou não).

Por fim, as melhorias de velocidade estarão diretamente relacionadas ao tempo de compilação que teria ocorrido na execução de teste específica.

Observações

  • A primeira execução de teste após habilitar a opção ou abrir o Visual Studio incorrerá em uma compilação do projeto.
  • Os arquivos no editor podem não ser salvos quando os testes são executados. Para resolver isso antes de fazer check-in, faça uma compilação completa (Ctrl+Shift+B).
  • Os binários no disco não são atualizados quando ocorre a execução de teste de recarga dinâmica.
  • A execução de testes com recarga dinâmica não funciona com "Testar>Executar Todos os Testes", "Executar Todos os Testes na Exibição" no Gerenciador de Testes nem com Executar Todos os Testes do nó de solução no Gerenciador de Soluções. O recurso não funciona com esses comandos porque eles garantem a compilação de toda a solução.
  • Quando testes com estruturas de destino sem suporte (anteriores ao .NET 6.0) são executados, ocorre uma compilação do projeto.
  • Se você vir inconsistências entre o que está no disco e o que o Gerenciador de Testes mostra, considere uma compilação de solução/projeto usando Ctrl+Shift+B e execute os testes. Qualquer compilação explícita substitui os resultados do teste com recarga dinâmica pelos resultados do teste regular com a compilação completa.

Problemas conhecidos

  • A execução de teste com recarga dinâmica não ocorre nos seguintes cenários:
    • Cobertura de código
    • Live Unit Testing
    • Criação de perfil
    • Depuração
  • Rastreamentos de pilha podem não ser legíveis com a presença de tokens ilegíveis. Esse problema está sendo acompanhado aqui e uma correção está planejada no .NET 7.0
    • A solução alternativa recomendada nesse caso é compilar o projeto e executar novamente o teste.

Seus comentários importam

Conforme observado anteriormente, para que esse recurso experimental fique completo, precisamos de seus comentários. Se você tiver alguma sugestão de como a experiência deveria ser, ou se encontrar problemas, dedique um momento para nos relatar problemas. Somente com seus comentários podemos garantir que problemas críticos sejam resolvidos e que decisões futuras sejam priorizadas com base em sua participação.

Para entrar em contato conosco, use o mecanismo de comentários do Visual Studio.