TDD – Test-driven Development + C# – Parte III

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:

TDD Realizando testes

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:

TDD realizando tetses obtendo erro

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:

TDD obtendo um verde nos 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:

TDD obtendo erro em segundo teste

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:

TDD todos testes verdes

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


Deixe seu comentário

Seu endereço de e-mail não será publicado. Campos com * são obrigatórios!