.NET 6, C# 10 e implementação de testes: novos recursos para simplificar a codificação

Renato Groffe
3 min readDec 27, 2021

--

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:

https://bit.ly/live-testes-dotnet6-dicas-truques-novidades

--

--

Renato Groffe
Renato Groffe

Written by Renato Groffe

Microsoft Most Valuable Professional (MVP), Multi-Plataform Technical Audience Contributor (MTAC), Software Engineer, Technical Writer and Speaker