Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Dúvida sobre boas práticas no uso do @Before

Existe alguma regra para avaliação da necessidade do uso do @before?

No caso de objetos que precisem de valores default , parecer ser indispensável, mas e em casos como o que segue abaixo? Não estaríamos consumindo recursos desnecessariamente?

CLASSE DE TESTE COM @BEFORE
public class MatematicaMalucaTest {

    private MatematicaMaluca matematicaMaluca;
    private int resultadoCalculado;
    private int resultadoEsperado;
    private int valorParaTeste;

    @Before
    public void init(){
        System.out.println("init");
        matematicaMaluca = new MatematicaMaluca();
    }


    @Test
    public void validarValoreMaiorQue30(){
        System.out.println("validarValoreMaiorQue30");
        valorParaTeste = 50;
        resultadoEsperado = 200;        
        resultadoCalculado = matematicaMaluca.contaMaluca(valorParaTeste);
        assertEquals(resultadoCalculado, resultadoEsperado);
    }

    @Test
    public void validarValorMenoQue10(){
        System.out.println("validarValorMenoQue10");
        valorParaTeste = 5;
        resultadoEsperado = 10;        
        resultadoCalculado = matematicaMaluca.contaMaluca(valorParaTeste);
        assertEquals(resultadoCalculado, resultadoEsperado);
    }


    @Test
    public void validarValorZero(){
        System.out.println("validarValorZero");
        valorParaTeste = 0;
        resultadoEsperado = 0;        
        resultadoCalculado = matematicaMaluca.contaMaluca(valorParaTeste);
        assertEquals(resultadoCalculado, resultadoEsperado);
    }


    @Test
    public void validarValorNegativo(){
        System.out.println("validarValorNegativo");
        valorParaTeste = -10;
        resultadoEsperado = -20;        
        resultadoCalculado = matematicaMaluca.contaMaluca(valorParaTeste);
        assertEquals(resultadoCalculado, resultadoEsperado);
    }

    @Test
    public void validarValoreMaiorQue10Menor30(){
        System.out.println("validarValoreMaiorQue10Menor30");
        valorParaTeste = 15;
        resultadoEsperado = 45;        
        resultadoCalculado = matematicaMaluca.contaMaluca(valorParaTeste);
        assertEquals(resultadoCalculado, resultadoEsperado);
    }    
}
//CLASSE DE TESTE SEM @BEFORE
package br.com.caelum.leilao.test;

import org.junit.Test;
import static org.junit.Assert.*;

import org.junit.Before;

import br.com.caelum.leilao.servico.MatematicaMaluca;

public class MatematicaMalucaTest {

    private MatematicaMaluca matematicaMaluca = new MatematicaMaluca();
    private int resultadoCalculado;
    private int resultadoEsperado;
    private int valorParaTeste;



    @Test
    public void validarValoreMaiorQue30(){
        System.out.println("validarValoreMaiorQue30");
        valorParaTeste = 50;
        resultadoEsperado = 200;        
        resultadoCalculado = matematicaMaluca.contaMaluca(valorParaTeste);
        assertEquals(resultadoCalculado, resultadoEsperado);
    }

    @Test
    public void validarValorMenoQue10(){
        System.out.println("validarValorMenoQue10");
        valorParaTeste = 5;
        resultadoEsperado = 10;        
        resultadoCalculado = matematicaMaluca.contaMaluca(valorParaTeste);
        assertEquals(resultadoCalculado, resultadoEsperado);
    }


    @Test
    public void validarValorZero(){
        System.out.println("validarValorZero");
        valorParaTeste = 0;
        resultadoEsperado = 0;        
        resultadoCalculado = matematicaMaluca.contaMaluca(valorParaTeste);
        assertEquals(resultadoCalculado, resultadoEsperado);
    }


    @Test
    public void validarValorNegativo(){
        System.out.println("validarValorNegativo");
        valorParaTeste = -10;
        resultadoEsperado = -20;        
        resultadoCalculado = matematicaMaluca.contaMaluca(valorParaTeste);
        assertEquals(resultadoCalculado, resultadoEsperado);
    }

    @Test
    public void validarValoreMaiorQue10Menor30(){
        System.out.println("validarValoreMaiorQue10Menor30");
        valorParaTeste = 15;
        resultadoEsperado = 45;        
        resultadoCalculado = matematicaMaluca.contaMaluca(valorParaTeste);
        assertEquals(resultadoCalculado, resultadoEsperado);
    }    
}
1 resposta
solução!

Em relação ao consumo, pode ficar tranquilo... é só a execução de um teste, ele nasce e morre rapidamente...

Falando do before especificamente, realmente ali é um caso ruim... o ideal é que vc use o before quando vc tem alguma lógica que deve ser executada antes de cada teste.. Ou se vc quer, por exemplo, sempre instanciar o objeto novamente antes de cada teste... agora se é para instanciar uma vez só, faz no modo padrão.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software