wpjr2’s Weblog

Artigos e tutoriais úteis

Como modelar testes unitários para entidades/objetos Java

Posted by wpjr2 em abril 9, 2008

O primeiro passo na modelagem de testes unitários para entidades/objetos Java é identificar todos os possíveis caminhos que um dado usuário poderá passar pela operação ou funcionalidade implementada. Em geral sempre existirão casos de sucesso (esperado pelo usuário) e casos de falha (fluxo alternativo de execução que acarretará numa exceção). Em alguns casos onde não se espera um erro, apenas os casos de sucesso serão testados pelos testes de unidade.

O importante também é sempre testar as fronteiras (valores bem próximos do limite (dentro e fora) e os valores de limite) para garantir que os limites estejam sendo respeitados corretamente.

Por exemplo:

Classe ContaBancaria

Operações implementadas:

1. depositar:

a) um valor positivo (caso de sucesso) e
b) um valor negativo (caso de falha) como entrada.

2. sacar:

a) o um valor positivo que seja menor que o saldo disponível em conta (caso de sucesso)
b) o um valor positivo que seja iguai ao saldo disponível em conta (caso de sucesso)
c) o um valor positivo que seja maior que o saldo disponivel em conta mas menor que a soma do valor do cheque especial e o saldo disponivel em conta (caso de sucesso)
d) o um valor positivo que seja igual a soma do valor do cheque especial e o saldo disponivel em conta (caso de sucesso)
e) o um valor positivo que seja maior que o saldo disponivel em conta e o cheque especial somados (caso de falha)
f) o um valor negativo (caso de falha)

Para cada um dos casos acima, será necessário a implementação de um teste unitário com a responsabilidade de verificar a corretude da implementação.

Um exemplo de implementação do caso de sucesso para o depósito pode ser feito da seguinte maneira (teste unitário dentro da classe de testes):

/**
* testar deposito
*/
public void testarDeposito(){
double valorDepositar = 500.0;
double valorEsperado = conta.getSaldo() + valorDepositar;
conta.depositar(valorDepositar);
// comparar o saldo na conta

assertEquals(“Saldo está incorreto”, valorEsperado, conta.getSaldo());
}

E um exemplo de um teste unitário de falha para o saque:

/**
* testando o saque com valor alem do disponivel em cheque especial.
*/
public void testarSaqueMaiorQueChequeEspecial(){
double valorSacar = conta.getTipoConta().obterValorChequeEspecial() + 101;
conta.depositar(100);
double valorEsperado = conta.getSaldo();

conta.sacar(valorSacar);

assertEquals(“O valor saldo está incorreto”, valorEsperado, conta.getSaldo());
}

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

 
%d blogueiros gostam disto: