Implementando testes com o VS Code, .NET Core, Selenium WebDriver e xUnit

Uma dúvida bastante comum entre desenvolvedores que utilizam o .NET Core a partir do Visual Studio Code e, mesmo entre Analistas de QA, está no suporte à execução de testes nesta ferramenta. Nos primeiros releases do .NET Core essa capacidade não estava presente no VS Code, o que restringia este tipo de implementação à sua execução através do .NET Core CLI (via comando dotnet test).

A extensão .NET Core Test Explorer veio como uma resposta a esta necessidade, suportando a utilização de frameworks como xUnit, MSTest e NUnit:

Este artigo tem por objetivo demonstrar como é simples o uso desta extensão, considerando para tanto um exemplo prático que emprega o .NET Core 2.1, o xUnit e o Selenium WebDriver.

E aproveito este espaço para deixar aqui um convite.
Dia 02/08/2018 (quinta-feira) às 21h30 — horário de Brasília — teremos mais um hangout no Canal .NET. Confira esta apresentação online com o MVP Rafael Cruz e aprenda mais sobre como testar o comportamento de APIs REST utilizando o framework SpecFlow.
Para efetuar a sua inscrição acesse a página do evento no Facebook ou então o Meetup. A transmissão acontecerá via YouTube, em um link a ser divulgado em breve.

Implementando o projeto de testes

Para executar o site que será testado por meio do Selenium WebDriver efetue o donwload da aplicação que está no GitHub (esse link inclui também o projeto detalhado nesta seção):

https://github.com/renatogroffe/Selenium-DotNetCore2.1-xUnit-VSCode

Ou ainda execute o comando a seguir para criar um container Docker (neste caso específico o acesso ao site acontecerá na porta 1234):

docker run --name site-conversordistancias -p 1234:80 -d renatogroffe/site-conversordistancias

A imagem renatogroffe/site-conversordistancias foi disponibilizada no Docker Hub e também pode ser baixada gratuitamente:

A aplicação que será submetida a testes fará a conversão de distâncias em milhas para quilômetros, conforme indicado na imagem a seguir:

Um outro exemplo de implementação de testes desta aplicação com o Visual Studio 2017 foi abordado no seguinte artigo:

.NET Core 2.0 + Selenium WebDriver: testes em modo headless com Firefox e Chrome

E também em um evento do Canal .NET, cuja gravação está disponível no YouTube e pode ser assistida gratuitamente:

O projeto de testes ConversorDistancias.Testes será criado via .NET Core CLI através do seguinte comando:

dotnet new xunit -n ConversorDistancias.Testes

Serão adicionados ainda a este projeto os seguintes packages (por meio do comando dotnet add package):

  • Microsoft.Extensions.Configuration.Json, para possibilitar o acesso ao arquivo appsettings.json;
  • Selenium.WebDriver, para a implementação dos testes envolvendo o uso do Selenium.

E finalmente será executado o comando dotnet restore, a fim de restaurar as dependências de ConversorDistancias.Testes.

O resultado destas diferentes tarefas realizadas via linha de comando pode ser observado nas imagens a seguir:

Na listagem a seguir está a implementação da classe de testes que efetuará a validação do site de conversão de distâncias no Firefox e no Chrome, empregando ainda para isto o suporte à execução no modo headless oferecido por estes browsers:

As diferentes estruturas que compõem o projeto ConversorDistancias.Testes estão no mesmo repositório mencionado no início desta seção:

https://github.com/renatogroffe/Selenium-DotNetCore2.1-xUnit-VSCode


Executando os testes

A instalação da extensão .NET Core Test Explorer habilitará um novo ícone na barra lateral do Visual Studio Code, o qual ao ser acionado exibirá a seção .NET TEST EXPLORER com os diferentes testes definidos na classe TestesConversaoDistancias:

Para executar todos os testes encontrados será acionada a opção Run All Tests (há ainda a possibilidade de execução de testes individualmente ou, até mesmo, por classe):

As seções TEST: .NET TEST EXPLORER e TERMINAL indicarão que os testes se encontram em execução:

Concluído com sucesso este procedimento os diferentes testes aparecerão marcados com um sinal na cor verde:

Essa extensão certamente abre novas possibilidades de uso para o VS Code, porém é importante frisar que até o momento de publicação deste artigo (final de Julho/2018) a mesma ainda dispõe de mecanismos para o debug de testes.