[RESOLVIDO] Junit - AssertTrue

Bom estou com uma classe chamada ExecicioX que tem o seguinte código

package capitulo3.exercicio;

public class ExecicioX {

	public static void main(String[] args) {
		
		ExecicioX e = new ExecicioX();
		e.mostraValor();
		System.out.println();
		
		System.out.println(e.soma());
		System.out.println(e.somaTermos(1, 1000, 1000));
		System.out.println(e.somarTodos(1, 1000));
		e.calcularMultiplo(12);
		e.calcularFatorial();
	}
	
	public void mostraValor(){
		//Imprima todos os números de 150 a 300
		for(int i = 150; i <= 300; i++){
					
			System.out.println(i);
		}
	}
	
	public int soma(){
		
		//Imprimir a soma de 1 até 1000
		int i = 0;
		int soma = 0;
		
		while(i <= 1000){
			soma = soma + i;
			i++;
		}
		
		return soma;
	}
	
	public int somaTermos(int a1, int an, int n){
		
		//Imprimir a soma de 1 até 1000
		int sn;
		
		sn = ((a1 + an) * n) / 2;
		
		return sn;
	}
	
	//Imprimir a soma de 1 até 1000
	public long somarTodos(int inicio, int fim) {  
		   return ((inicio + fim) * (fim-inicio+1)) / 2;  
	}  
	
	//calcular multiplos de 3
	public void calcularMultiplo(int numero){
		
		if(numero % 3 == 0)
			System.out.println("É multiplo de três");
		else 
			System.out.println("Não é multiplo");		
	}
	
	//calcular fatorial
	public void calcularFatorial(){
		
		int total = 1; 
		
		for (int i =1; i <= 10; i++) { 
			total = total * i; 
		} 
		
		System.out.println(total); 
	}
}

agora testando com junit


package capitulo3.ModelTeste;

import static org.junit.Assert.*;

import org.junit.Before;
import org.junit.Test;

import capitulo3.exercicio.ExecicioX;

public class ExercicioXTeste {

	ExecicioX x;
	
	@Before
	public void setUp() throws Exception {
		x = new ExecicioX();
	}

	@Test
	public void testSoma() {
		assertEquals(500500, x.soma());
	}
	
	@Test
	public void testSomaTermos() {
		assertEquals(500500, x.somaTermos(1, 1000, 1000));
	}
	
	@Test
	public void testSomarTodos() {
		assertEquals(500500, x.somarTodos(1, 1000));
	}
	
	@Test
	public void testcalcularMultiplo() {
		assertTrue("é multiplo", x.calcularMultiplo(12));
	}
}

minha duvida é no método testcalcularMultiplo(), pois ta informando que tá errado queria saber como é que ficaria do modo correto.

no assertTrue vc passa um boolean como parametro.

Como vc quer testar seu calcularMultiplo, vc teria que retornar boolean ao inves de void

//calcular multiplos de 3  
    public boolean calcularMultiplo(int numero){  
          
         return numero % 3 == 0;
    }         

aí pra testar ficaria:

Assert.assertTrue(calcularMultiplo(12));

O teste irá passar, pois 12 é divisível por 3, se colocar 13, por exemplo, seu teste irá falhar

Valeu!

@igor_ks

[quote=igor_ks]no assertTrue vc passa um boolean como parametro.

Como vc quer testar seu calcularMultiplo, vc teria que retornar boolean ao inves de void

//calcular multiplos de 3  
    public boolean calcularMultiplo(int numero){  
          
         return numero % 3 == 0;
    }         

aí pra testar ficaria:

Assert.assertTrue(calcularMultiplo(12));

[/quote]

eu fiz assim na classe de teste:

       @Test
	public void testCalcularMultiplo() {
		
		int numero = 12;
		assertTrue(numero % 3 == 0);
	}

Deu certo, mas o seu de mudar o tipo de retorno é melhor, pois se quiser mudar o algoritmo só muda o método da classe.

Esse seu teste está errado. Voce deve testar sua implementação. Esse seu teste não está garantindo que o método está correto, caso ele mude, seu teste continuará passando.
No teste você deve chamar o seu método.

blz

igor_ks

já mudei o meu método, agora ta rocheda :slight_smile: