Dúvida com JUnit

3 respostas
K

Olá...

Estou começando a dar uma estudada no JUnit.
Realizando um exemplo:

package de;

public class Livro {
    
    private String titulo;
    private double preco;
    
    public Livro(String titulo, double preco){
        this.titulo = titulo;
        this.preco  = preco;
    }
    
    public boolean equals(Object object){
        if(object instanceof Livro){
            Livro livro = (Livro)object;
            return getTitulo().equals(livro.getTitulo()) && getPreco() == livro.getPreco();
        }
        
        return false;
    }

    public double getPreco() {
        return preco;
    }
    public void setPreco(double preco) {
        this.preco = preco;
    }
    public String getTitulo() {
        return titulo;
    }
    public void setTitulo(String titulo) {
        this.titulo = titulo;
    }

}

Test:

package test;

import de.Livro;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;

public class TesteQueVerificaSeOObjetoELivro extends TestCase {

    private Livro livro1;
    private Livro livro2;
    private Livro livro3;
    
    public static void main(String[] args) {
    }

    /*
     * Configurando as propriedades do teste
     */
    protected void setUp() throws Exception {
        super.setUp();
        
        livro1 = new Livro("Java Programando", 90.50);
        livro2 = new Livro("Core J2EE Patternd", 120.30);
        livro3 = new Livro("Java Programando", 90.50);
    }

    /*
     * Finalizando as propriedades do teste
     */
    protected void tearDown() throws Exception {
        super.tearDown();
        
        livro1 = null;
        livro2 = null;
        livro3 = null;
    }

    /**
     * @param name
     */
    public TesteQueVerificaSeOObjetoELivro(String name) {
        super(name);
    }
    
    public void testEquals(){
        assertFalse(livro2.equals(livro1));
        assertFalse(livro1.equals(livro1));
        //assertTrue(livro1.equals(livro3));
    }
    
    public static Test suite(){
        TestSuite suite = new TestSuite();
        suite.addTest(new TesteQueVerificaSeOObjetoELivro("testEquals"));
        return suite;
    }

}

no método testEquals() ao utilzar o assertFalse eu estou afirmando que o livro2 não é igual ao livro 1 certo ?

só que se eu rodar esse test, o corre erro...

Alguém pode me explicar esse detalhe melhor ?

Obrigado!

3 Respostas

C

O erro tah na linha: assertFalse(livro1.equals(livro1));

Vc tah querendo dizer que os dois objetos são diferentes e qdo eles forem iguais(seu caso) um AssertionFailedError será lançado.

K

cecaldas:
O erro tah na linha: assertFalse(livro1.equals(livro1));

Vc tah querendo dizer que os dois objetos são diferentes e qdo eles forem iguais(seu caso) um AssertionFailedError será lançado.

humm… mas se eles são diferentes(no meu caso são) o teste não teria que ser executado com exito ?

Obrigado!

kina

javaRJ:
cecaldas:
O erro tah na linha: assertFalse(livro1.equals(livro1));

Vc tah querendo dizer que os dois objetos são diferentes e qdo eles forem iguais(seu caso) um AssertionFailedError será lançado.

humm… mas se eles são diferentes(no meu caso são) o teste não teria que ser executado com exito ?

Obrigado!

Eles são iguais!
tanto nos valores quanto na referencia ^^
olhe o teste que você está fazendo:
livro1.equals(livro1)
hehehehe
ou seja, mesmo que vc não etivesse implementado nada, ele daria o erro, pois você está perguntando:
É falso? E o método responde:
Não, é verdadeiro!

Falou

Criado 21 de julho de 2005
Ultima resposta 21 de jul. de 2005
Respostas 3
Participantes 3