.NET + xUnit: exibindo mensagens durante a execução de testes | Dica rápida
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: