ASP.NET Core + SpecFlow: implementando testes a partir de uma user story
Já abordei anteriormente o uso do framework SpecFlow no teste de aplicações .NET em diversas lives e artigos. O SpecFlow é uma alternativa open source muito útil ao se optar por abordagens como BDD (Behavior Driven Development), tornando possível a execução de testes que validem funcionalidades de um projeto a partir de user stories.
Recentemente participei da primeira edição online DevOps Saturday, em que demonstrei como automatizar os processos de testes, build e deployment de uma API REST criada com ASP.NET Core, utilizando para isto o Visual Studio 2019, GitHub Actions, SpecFlow, xUnit e o Azure App Service. A gravação desta palestra pode ser assistida gratuitamente no YouTube (assim como todo o evento):
O exemplo que usei nesta ocasião já foi disponibilizado no GitHub:
ASP.NET Core 3.1 + REST API + Application Insights + SpecFlow + xUnit + Conversor Temperaturas
Assim como o workflow do GitHub Actions empregado na automação dos testes, build e publicação na nuvem:
GitHub Actions + ASP.NET Core 3.1 + Tests + Azure CLI + Azure App Service
No Visual Studio 2019 será necessário instalar a extensão do SpecFlow:
Na listagem a seguir temos a user story que serviu de base para os testes (um arquivo com a extensão .feature):
E a classe baseada no template Step Definition que mapeia as sentenças da user story para código C#, com este último validando a funcionalidade que converte temperaturas em Fahrenheit para o equivalente nas escalas Celsius e Kelvin:
Os templates para a criação dessas estruturas aparecerão logo após a instalação da extensão do SpecFlow para o Visual Studio 2019:
Para conseguir trabalhar com as configurações regionais do Brasil é necessário adicionar ao projeto de testes o arquivo specflow.json, especificando o valor pt-BR para o item feature em language:
Essa extensão conta com funcionalidades extremamente úteis para o trabalho com user stories, tais como suporte a IntelliSense e debugging a partir dos passos indicados em uma história. No vídeo indicado no início deste artigo demonstro esses recursos disponibilizados pelo SpecFlow.