.NET 6, C# 10 e implementação de testes: novos recursos para simplificar a codificação
Venho abordando novidades do .NET 6 e do C# 10 desde os primeiros Previews, com um post neste blog que agrupa todos os conteúdos que produzi até agora (artigos, projetos de exemplos e mesmo lives que organizei/participei):
.NET 6 - Guia de Referência: artigos, vídeos e exemplos de utilização
Neste novo artigo dou sequência a esse esforço, mostrando como podemos nos beneficiar das novidades na implementação de testes baseados em .NET 6 + C# 10 e com um código mais enxuto.
O repositório com os testes aqui apresentados está disponível no GitHub, envolvendo validações em uma Class Library com funcionalidades para a conversão de distâncias em milhas para o equivalente em quilômetros (e vice-versa):
https://github.com/renatogroffe/DotNet6-xUnit-ImplicitUsings_ConversaoDistancias
Supondo as seguintes implementações para as classes TestesMilhasParaKm:
E TestesKmParaMilhas:
E as versões refatoradas em .NET 6 + C# 10 para TestesMilhasParaKm:
E TestesKmParaMilhas:
Podemos notar que nestas novas implementações:
- O uso de chaves ({ e }) envolvendo uma classe dentro do namespace ao qual a mesma pertence foi omitido, com a própria declaração deste namespace finalizada por ponto-e-vírgula (;). Este novo tipo de declaração tem por nome File-scoped namespaces, sendo um recurso que integra o C# 10;
- A declaração using Xunit; também foi retirada, exemplificando aqui a utilização de Implicit Usings. Com esta outra novidade podemos indicar no arquivo .csproj de um projeto namespaces usados com maior frequência, dispensando com isto a obrigatoriedade da sua declaração por várias classes.
E como ficou o arquivo .csproj do projeto de testes? Na linha 28 da próxima listagem podemos observar a declaração do namespace Xunit como um Implicit Using:
A imagem a seguir mostra que os testes foram executados com sucesso, além de um arquivo gerado automaticamente chamado Groffe.Distancias.Testes.GlobalUsings.g.cs:
O arquivo Groffe.Distancias.Testes.GlobalUsings.g.cs será sempre atualizado automaticamente quando incluirmos novos Implicit Usings no arquivo .csproj:
Uma tentativa de especificar um namespace configurado como Implicit Using fará com que o Visual Studio 2022 (ou o Visual Studio Code) indiquem que esta declaração é desnecessária:
E concluo este artigo com um convite…
Dia 10/01/2022 (segunda) às 21:00 — horário de Brasília — teremos mais um evento online e gratuito no canal Canal .NET.
Será uma live em que apresentarei exemplos utilizando vários frameworks e a integração com soluções como o Azure DevOps, bem como novidades do .NET 6 e orientações sobre como automatizar os testes, o build e o deployment de seus projetos.
Para participar faça sua inscrição no link a seguir, a transmissão acontecerá via YouTube: