ASP.NET Core + SpecFlow: implementando testes a partir de uma user story

Renato Groffe
2 min readSep 20, 2020

--

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.

--

--

Renato Groffe

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