Vamos lá galera, vamos continuar nossa série sobre TDD + C#.
Para conferir os outros posts da série:
Parte I – http://viniciusquaiato.com/blog/index.php/tdd-test-driven-development-c/
Parte II – http://viniciusquaiato.com/blog/index.php/tdd-test-driven-development-c-parte-ii/
Neste artigo abordaremos depósitos.
A primeira coisa que precisamos fazer para realizar nosso depósito é escrever um teste:
[code lang=”csharp”][TestMethod]
public void Deve_Realizar_Deposito()
{
var conta = new ContaBancaria(10);
conta.Depositar(10);
}[/code]
Este método ainda nem compila, afinal precisamos implementar o método Depositar na classe ContaBancaria.
E o resultado deve ser este (lembrando que fazemos o mínimo para o programa compilar e rodarmos o teste):
[code lang=”csharp”]public void Depositar(decimal valorDoDeposito)
{
}[/code]
Agora vamos executar todos os nossos testes. É importante executarmos todos os testes para garantir que tudo funciona:
Percebam também a importância de um nome descritivo para os testes. Desta forma podemos saber exatamente o que está sendo garantido com aquele teste.
Agora conseguimos um verde, afinal nosso teste apenas garante um depósito. Vamos prosseguir criando um teste para verificar se o valor depositado foi somado ao saldo:
[code lang=”csharp”][TestMethod]
public void Deve_Realizar_Deposito_de_5_Em_Conta_Com_Saldo_10_E_Saldo_Deve_Ficar_15()
{
var conta = new ContaBancaria(10);
conta.Depositar(5);
Assert.AreEqual(15, conta.SaldoAtual);
}[/code]
E ao rodarmos nossos testes temos:
O erro é bem claro: diz que estávamos esperando 15 e o resultado foi 10. Isso por que nosso método de depósito não possui nenhuma implementação.
Agora vamos alterar o código para que consigamos um verde nos testes:
[code lang=”csharp”]public void Depositar(decimal valorDoDeposito)
{
this.SaldoAtual = 15;
}[/code]
E executando nossos testes:
Agora que conseguimos um verde, devemos escrever mais testes para garantir que tudo funciona:
[code lang=”csharp”][TestMethod]
public void Deve_Realizar_Deposito_de_10_Em_Conta_Com_Saldo_10_E_Saldo_Deve_Ficar_20()
{
var conta = new ContaBancaria(10);
conta.Depositar(10);
Assert.AreEqual(20, conta.SaldoAtual);
}[/code]
E rodando nossos testes temos:
Isso mostra que o código que escrevemos para o teste anterior passar deve ser alterado para que todos os testes passem. Desta forma obtemos o seguinte código no método Depositar:
[code lang=”csharp”]public void Depositar(decimal valorDoDeposito)
{
this.SaldoAtual += valorDoDeposito;
}[/code]
Agora precisamos executar todos nossos testes para ver se tudo está ok:
Bom galera, espero ter mostrado mais um pouco de TDD para vocês.
Na próxima parte do artigo abordaremos como testar a interação com um repositório de contas.
Abraços e até a próxima.
Original em: http://www.viniciusquaiato.com