Nesta aula iremos verificar como é feito os testes de TDD e BDD em C#
Manter a qualidade do software, principalmente para projetos grandes é algo extremamente essencial, coisas que muitas vezes não conseguimos enxergar por não entender o contexto geral do software que estamos fazendo e muitas vezes estamos mais preocupados na entrega das funções do que com a qualidade.
Então com isso, mostraremos duas técnicas essenciais utilizadas no C# para melhorar o código e a forma como trabalhamos.
Existem duas formas para garantir a qualidade do software:
Vamos mostrar um projeto de validação de CPF com um teste básico unitário e um teste básico de comportamento.
No VSStudio, clicar com o botão direito na solução para adicionar novo projeto NUnit Test Project
Para executar os testes com TDD, precisamos entrar na pasta TDD e rodar o comando:
dotnet test
Vamos testar uma classe chamada Cliente para testar se o Cpf é válido ou inválido, utilizando os métodos IsTrue e IsFalse da Classe Assert.
using NUnit.Framework;
namespace TDD
{
public class Tests
{
[SetUp]
public void Setup()
{
Cliente.DestroyAll();
}
[Test]
public void ValidaCpfValido()
{
var cliente = new Cliente();
cliente.CPF = "793.608.890-32"
Assert.IsTrue(cliente.ValidaCpf());
}
[Test]
public void ValidaCpfInValido()
{
var cliente = new Cliente();
cliente.CPF = "793.608.890-33"
Assert.IsFalse(cliente.ValidaCpf());
}
}
}
BDD-Behavior Driven Development, teste de comportamento, não vem instalado por padrão no VSStudio.
Precisamos instalar um componente chamado specflow.
Além do specflow precisamos fazer a instalação do Selenium, que é um dos componente que vai abrir o browser e fará o teste como se fosse humano.
Para executar os testes com BDD, precisamos levantar a aplicação com o comando abaixo:
dotnet watch run
Iremos entrar na pasta BddValidator e executar o comando:
dotnet test
No projeto temos uma pasta chamada Features e o arquivo ValidateCPF.feature, que possui o código que precisa ser executado:
Feature: Validate CPF
@mytag
Scenario: CPF Válido
Given i'm in home page
And I type the CPF "583.068.670-84"
When I clicl on button validate
Then I have the successful result
Na pasta Steps, arquivo ValidateCPFSteps, temos a implementação do código acima.
Precisamos baixar o driver do Chrome de acordo com o sistema operacional. Abaixo, segue o código com parte da estrutura da implementação:
using NUnit.Framework;
using OpenQA.Selenium.Chrome;
using TechTalk.SpecFlow;
namespace BDDValidator.Steps
{
public class Tests
{
[SetUp]
public sealed class ValidateCPFStepDefinitions
{
private ChromeDriver _chromeDriver;
private readonly ScenarioContext _scenarioContext;
}
public ValidateCPFStepDefinitions(ScenarioContext scenarioContext)
{
_scenarioContext = _scenarioContext;
_chromeDriver = new ChromeDriver(@"/Users/danilo/projetos/torne-se/aulas/dotnet_core/WebTddBddSharp/BddValidator/Drivers/mac");
}
}
}
O Given faz um match do código que está escrito na Feature, acessando a página e digitando os campos:
[Given(@"i'm in home page")]
public void GivenImInHomePage()
{
_chromeDriver.Url = "https://localhost:5001";
}
[Given(@"I type the CPF)"]
public void GivenITypeTheCPF(string cpf)
{
_chromeDriver.FindElementByCssSelector("#Nome").SendKeys("Danilo BDD");
_chromeDriver.FindElementByCssSelector("#CPF").SendKeys(cpf);
}
O teste abaixo faz o click no botão:
[When(@"I click on button validate")]
public void WhenIClickOnButtonValidate()
{
_chromeDriver.FindElementByCssSelector("input[type='submit']")
}
O teste abaixo verifica se houve sucesso:
[Then(@"I have the successful result")]
public void ThenIHaveTheSuccessfukResult()
{
Assert.IsTrue(_chromeDriver.FindElementByCssSelector(".alert-success").Count > 0);
_chromeDriver.Close();
_chromeDriver.Dispose();
}
Nesta aula iremos verificar como é feito os testes de TDD e BDD em C#
Manter a qualidade do software, principalmente para projetos grandes é algo extremamente essencial, coisas que muitas vezes não conseguimos enxergar por não entender o contexto geral do software que estamos fazendo e muitas vezes estamos mais preocupados na entrega das funções do que com a qualidade.
Então com isso, mostraremos duas técnicas essenciais utilizadas no C# para melhorar o código e a forma como trabalhamos.
Existem duas formas para garantir a qualidade do software:
Vamos mostrar um projeto de validação de CPF com um teste básico unitário e um teste básico de comportamento.
No VSStudio, clicar com o botão direito na solução para adicionar novo projeto NUnit Test Project
Para executar os testes com TDD, precisamos entrar na pasta TDD e rodar o comando:
dotnet test
Vamos testar uma classe chamada Cliente para testar se o Cpf é válido ou inválido, utilizando os métodos IsTrue e IsFalse da Classe Assert.
using NUnit.Framework;
namespace TDD
{
public class Tests
{
[SetUp]
public void Setup()
{
Cliente.DestroyAll();
}
[Test]
public void ValidaCpfValido()
{
var cliente = new Cliente();
cliente.CPF = "793.608.890-32"
Assert.IsTrue(cliente.ValidaCpf());
}
[Test]
public void ValidaCpfInValido()
{
var cliente = new Cliente();
cliente.CPF = "793.608.890-33"
Assert.IsFalse(cliente.ValidaCpf());
}
}
}
BDD-Behavior Driven Development, teste de comportamento, não vem instalado por padrão no VSStudio.
Precisamos instalar um componente chamado specflow.
Além do specflow precisamos fazer a instalação do Selenium, que é um dos componente que vai abrir o browser e fará o teste como se fosse humano.
Para executar os testes com BDD, precisamos levantar a aplicação com o comando abaixo:
dotnet watch run
Iremos entrar na pasta BddValidator e executar o comando:
dotnet test
No projeto temos uma pasta chamada Features e o arquivo ValidateCPF.feature, que possui o código que precisa ser executado:
Feature: Validate CPF
@mytag
Scenario: CPF Válido
Given i'm in home page
And I type the CPF "583.068.670-84"
When I clicl on button validate
Then I have the successful result
Na pasta Steps, arquivo ValidateCPFSteps, temos a implementação do código acima.
Precisamos baixar o driver do Chrome de acordo com o sistema operacional. Abaixo, segue o código com parte da estrutura da implementação:
using NUnit.Framework;
using OpenQA.Selenium.Chrome;
using TechTalk.SpecFlow;
namespace BDDValidator.Steps
{
public class Tests
{
[SetUp]
public sealed class ValidateCPFStepDefinitions
{
private ChromeDriver _chromeDriver;
private readonly ScenarioContext _scenarioContext;
}
public ValidateCPFStepDefinitions(ScenarioContext scenarioContext)
{
_scenarioContext = _scenarioContext;
_chromeDriver = new ChromeDriver(@"/Users/danilo/projetos/torne-se/aulas/dotnet_core/WebTddBddSharp/BddValidator/Drivers/mac");
}
}
}
O Given faz um match do código que está escrito na Feature, acessando a página e digitando os campos:
[Given(@"i'm in home page")]
public void GivenImInHomePage()
{
_chromeDriver.Url = "https://localhost:5001";
}
[Given(@"I type the CPF)"]
public void GivenITypeTheCPF(string cpf)
{
_chromeDriver.FindElementByCssSelector("#Nome").SendKeys("Danilo BDD");
_chromeDriver.FindElementByCssSelector("#CPF").SendKeys(cpf);
}
O teste abaixo faz o click no botão:
[When(@"I click on button validate")]
public void WhenIClickOnButtonValidate()
{
_chromeDriver.FindElementByCssSelector("input[type='submit']")
}
O teste abaixo verifica se houve sucesso:
[Then(@"I have the successful result")]
public void ThenIHaveTheSuccessfukResult()
{
Assert.IsTrue(_chromeDriver.FindElementByCssSelector(".alert-success").Count > 0);
_chromeDriver.Close();
_chromeDriver.Dispose();
}