Ae galera, gostaria de um ajudinha…como eu faço pra escrever um teste de um metodo void??
tipo quero testar isso
public void fechar(int dias)
{
this.dias=dias;
valor=apartamento.getValorDiaria()*dias;
}
como faço??
[]'s
Ae galera, gostaria de um ajudinha…como eu faço pra escrever um teste de um metodo void??
tipo quero testar isso
public void fechar(int dias)
{
this.dias=dias;
valor=apartamento.getValorDiaria()*dias;
}
como faço??
[]'s
Mas que tipo de teste???
Só pra saber se está funcionando?
Ponha um System.out.println("O valor é: " + valor); e veja se o que apareceu no console é o que você esperava…
Este metodo altera uma variavel de instancia: no caso valor que mesmo vc não tendo colocado this, não foi declarada, se não altera-se não teria sentido o metodo, basta vc escrever o teste em cima desta variavel de instancia.
exato, o teste é para saber se esta funcionando…
teste
package tests.hotel;
import hotel.model.*;
import junit.framework.TestCase;
public class TestHotel extends TestCase{
Categoria categoria = new Categoria("Luxo", 150);
Apartamento apartamento = new Apartamento(categoria, 3);
Endereco endereco = new Endereco("Rua", "Aribugu", 550, "Bl 10 Apto 21 b", "São Paulo", "SP");
Cliente cliente = new Cliente("Luiz Carlos dos Santos", "123456", endereco);
Hospedagem hospedagem = new Hospedagem(cliente, apartamento);
Hotel hotel1= new Hotel();
Endereco e1 = new Endereco("Av. ","Mateo Bei",1420,"","São Paulo", "SP");
Endereco e2 = new Endereco("Av. ","Mateo Bei",1421,"","São Paulo", "SP");
Endereco e3 = new Endereco("Av. ","Mateo Bei",1422,"","São Paulo", "SP");
Endereco e4 = new Endereco("Av. ","Mateo Bei",1423,"","São Paulo", "SP");
Endereco e5 = new Endereco("Av. ","Mateo Bei",1424,"","São Paulo", "SP");
Cliente c1 = new Cliente("Adriano Azevedo","0123",e1);
Cliente c2 = new Cliente("Flavia Azevedo","01234",e2);
Cliente c3 = new Cliente("Fernando Azevedo","012345",e3);
Cliente c4 = new Cliente("Vanessa Azevedo","0123456",e4);
Cliente c5 = new Cliente("Vitor Haniel Azevedo","01234567",e5);
public void testListarApartamentos()
{
String esperado="";
String resultado="";
int cont;
for (cont=0; cont<10; cont++)
{
resultado=resultado+hotel1.listarApartamentos()[cont].toString()+"\n\n";
}
for (cont=0;cont<=6;cont++)
{
esperado=esperado+"Apartamento\nSimples: R$ 85.0\n2 Camas\nStatus: Desocupado.\n\n";
}
for (cont=7;cont<10;cont++)
{
esperado=esperado+"Apartamento\nLuxo: R$ 115.0\n1 Camas\nStatus: Desocupado.\n\n";
}
assertEquals(esperado,resultado);
}
public void testAlugarApartamento()
{
assertEquals(null,hotel1.alugarApartamento(c3, 3));
assertEquals(hotel1.listarApartamentos()[0],hotel1.alugarApartamento(c2, 2));
assertEquals(c2,hotel1.listarHospedes()[0]);
}
public void testFecharHospedagem()
{
}
}
Classe a ser testada
package hotel.model;
public class Hospedagem {
private int dias;
private double valor;
private Cliente cliente;
private Apartamento apartamento;
public Hospedagem(Cliente pCliente, Apartamento pApartamento)
{
this.cliente=pCliente;
this.apartamento=pApartamento;
}
public void fechar(int dias)
{
this.dias=dias;
valor=apartamento.getValorDiaria()*dias;
}
public Cliente getCliente() {
return cliente;
}
public double getValor()
{
return valor;
}
}
Apartamento
package hotel.model;
public class Apartamento {
private int quantasCamas;
private String status;
private Categoria categoria;
private Hospedagem hospedagem;
public Apartamento(Categoria pCategoria, int pQuantasCamas)
{
this.quantasCamas = pQuantasCamas;
this.categoria = pCategoria;
status="Desocupado";
}
public String toString()
{
String apartamento = "Apartamento\n" + categoria + "\n"+ quantasCamas +" Camas\nStatus: "+ status+".";
return apartamento;
}
public boolean isDisponivel()
{
if (status.equals("Desocupado")){
return true;
}
else
{
return false;
}
}
public boolean isHospedado()
{
if (status.equals("Desocupado")){
return false;
}
else
{
return true;
}
}
public boolean podeAcomodar(int essaQuantidadeDeGente)
{
if (quantasCamas>=essaQuantidadeDeGente)
{
return true;
}
else
{
return false;
}
}
public boolean alugar(Hospedagem hospedagem)
{
if (isDisponivel())
{
this.hospedagem=hospedagem;
status="Ocupado";
return true;
}
else
{
return false;
}
}
public void desocupar()
{
status="Desocupado";
}
public Hospedagem getHospedagem() {
return hospedagem;
}
public double getValorDiaria()
{
return categoria.getPreco();
}
}
Categoria
package hotel.model;
public class Categoria {
private double preco;
private String nome;
public Categoria(String pNome, double pPreco)
{
this.nome = pNome;
this.preco = pPreco;
}
public double getPreco()
{
return preco;
}
public String toString()
{
String variavel = nome+": R$"+preco;
return variavel;
}
}
Sou iniciante…to ficando com dor de kbça…rs
Usando mocks:
@Test
public void testFecharDepoisDeTresDias(){
Apartamento apartamentoMock = createMock(Apartamento.class);
Hospedagem hospedagem = new Hospedagem(null, apartamentoMock);
expect(apartamentoMock.getValorDiaria()).andReturn(200d);
replay(apartamentoMock);
hospedagem.fechar(3);
assertEquals(600d, hospedagem.getValor());
verify(hospedagemMock);
}
Espero que ajude.
Putz…ainda nao consegui ver isso…mas com certeza ja deu uma clareada na mente!
Valeu!!!
Eu não vi exatamente o que você quer fazer, mas na maioria dos casos, mesmo quando você tem um método void, ele afeta de alguma maneira o sistema. Portanto, você deve testar o que foi alterado, realmente foi alterado conforme o esperado. No seu exemplo, o atributo valor.
Outro detalhe é que se isso for um teste unitário, ele deve testar SÓ a unidade. Caso outros objetos estejam envolvidos na operação, use Mock objects (eu aconselho o JMock) para simular o comportamento desses objetos.