[DUVIDA]testes com métodos do tipo List

4 respostas
P

to fazendo uns testes de uma classe que usa herança, no caso to criando objetos fazendo upcast, abaixo segue o código da classe teste,

package lp2.lab10;

import lp2.lab10.Disciplina.Estado;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;

public class DisciplinaTest{
	
	Disciplina p2, discreta, grafos;
	
	@Before
	public void setUp() throws Exception{
		Disciplina p2 = new DisciplinaSemestral("prog2", "2010.1");
		Disciplina grafos = new DisciplinaTrimestral("teoria dos grafos", "2010.1");
	}
	
	@Test
	public void testGetNomePeriodoEstado(){
		Assert.assertEquals("prog2", p2.getNome());
		Assert.assertEquals("teoria dos grafos", grafos.getNome());
		Assert.assertNotSame("prog1", p2.getNome());
		Assert.assertEquals("2010.1", p2.getPeriodo());
		Assert.assertNotSame("2009.2", p2.getPeriodo());
		Assert.assertEquals("2010.1", grafos.getPeriodo());
		Assert.assertEquals(Estado.CURSANDO, p2.getEstado());
		Assert.assertEquals(Estado.CURSANDO, grafos.getEstado());
		grafos.setEstado(Estado.CONCLUIDO);
		Assert.assertEquals(Estado.CONCLUIDO, grafos.getEstado());
	}
	
	@Test
	public void testAddNota() throws Exception{
		p2.addNota(7.5);
		p2.addNota(8);
		p2.addNota(6);
		Assert.assertEquals(false, p2.addNota(0));
	}

}

ele acusa o erro em todos os métodos, alguém sabe oq pode ser? se ficar complicado pra depurar depois eu posto o código da superclasse..

4 Respostas

Paulo_Silveira

ola Paulo

O problema é aqui:

Disciplina p2 = new DisciplinaSemestral("prog2", "2010.1");  
Disciplina grafos = new DisciplinaTrimestral("teoria dos grafos", "2010.1");

Voce esta criando variaveis locais. Basta fazer:

p2 = new DisciplinaSemestral("prog2", "2010.1");  
grafos = new DisciplinaTrimestral("teoria dos grafos", "2010.1");
P

Paulo Silveira:
ola Paulo

O problema é aqui:

Disciplina p2 = new DisciplinaSemestral("prog2", "2010.1");  
Disciplina grafos = new DisciplinaTrimestral("teoria dos grafos", "2010.1");

Voce esta criando variaveis locais. Basta fazer:

p2 = new DisciplinaSemestral("prog2", "2010.1");  
grafos = new DisciplinaTrimestral("teoria dos grafos", "2010.1");


porra, que leseira a minha, agora pq isso acontece?

Paulo_Silveira

O Java permite que voce use o mesmo nome de variavel para o escopo local e outra pro escopo instancia/classe (é um pouco mais complicado que isso). Se voce declara dentro do metodo/bloco, a variavel morre ao termino do metodo/bloco.

Por isso quando eu ensino java, eu forco um pouco as pessoas usarem a palavra chave this, que nesse caso é opcional, mas ajuda bastante no comeco para entender os escopos.

P

outra duvida, como eu faço pra fazer comparaçao de classes do tipo List?

Assert.assertEquals("[7.5, 8.0, 6.0]", p2.getNotas());

eu tava tentando fazer assim, mas o expected pelo jeito é diferente, alguem sabe como?

Criado 12 de maio de 2010
Ultima resposta 13 de mai. de 2010
Respostas 4
Participantes 2