.NET + xUnit: exibindo mensagens durante a execução de testes | Dica rápida

Renato Groffe
2 min readFeb 7, 2022

--

Recentemente produzi um artigo para este blog detalhando novidades do Visual Studio 2022 voltadas à execução de testes, em que um dos itens descritos abordava justamente o uso da instrução Console.WriteLine como alternativa para a geração de mensagens de log e sua exibição na janela Test Explorer:

Novidades do Visual Studio 2022: melhorias na execução de testes

Contudo, este tipo de capacidade não é compatível com testes escritos em xUnit. Como podemos então tirar proveito desta nova funcionalidade, mantendo com isso a utilização do framework considerado hoje a alternativa mais popular quando tratamos de testes com a plataforma .NET?

O xUnit conta desde a versão 2 com a interface ITestOutputHelper (namespace Xunit.Abstractions), que serve de base para a geração de um objeto que substitui o uso de Console.WriteLine. Isto viabiliza a exibição de mensagens na saída padrão (com a consequente visualização na janela Test Explorer) mesmo em versões anteriores ao Visual Studio 2022.

Para utilizar uma instância de ITestOutputHelper basta apenas definir um construtor para uma classe de testes, especificando no mesmo um parâmetro baseado neste tipo. Esta referência será então preenchida via injeção de dependências durante a execução dos testes, com o método WriteLine empregado na geração das mensagens:

Na imagem a seguir temos mensagens geradas a partir da janela Test Explorer:

Disponibilizei este exemplo como um repositório no GitHub, no qual foram usadas ainda tecnologias como Fluent Assertions, MongoDB e Apache Kafka:

https://github.com/renatogroffe/DotNet6-WorkerService-Kafka-MongoDB-xUnit-IntegrationTests_Acoes-v2

Essas e outras dicas já foram apresentadas também em uma live recente no Canal .NET, cuja gravação pode ser assistida gratuitamente no YouTube:

--

--

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

No responses yet