Testes com JUnit .. Estourando NullPointer

2 respostas
DaianeMira

boa tarde pessoal . .

Ao realizar o teste utilizando o Junit atraves do eclipse, na verdade realizando dois testes, um deles sendo para listar o que tiver dentro da entidade, atraves de mock do DAO, ele deu certo e retorna o que eu peço … porem ao testar a classe para o caso de ela estiver vazia e nao puder retornar nada, ela estoura um NullPointer e nao tenho mais ideia do que fazer

@Test
	public void testListAllEntityEmpty() {

		int ps = 0;
		int p = 0;
		List<Entityy> resultList = new LinkedList<Entity>();

		// arrange
		Engine engine = new Engine(); => Classe que contem o metodo testado
		DAOInterface d = mock(DAOInterface.class);
		reImple.setDAO(d);

		System.out.println("re " + resultList.isEmpty());
		if (d.listAll(Entity.class, ps, p).getResultList().isEmpty() == false)
			resultList.addAll(d.listAll(Entity.class, ps, p)
					.getResultList());
		when(d.listAll(Entity.class, ps, p)).thenReturn(
				(Result) ResultFactory.getResult(
						ResultsType.Result, resultList, null, null,
						Boolean.TRUE));

		// act
		Result r = engine.getRetorna();

		// assert
		assertEquals(true, r.getResultList().isEmpty());

	}

Nao sei fui clara … e desculpa se nao fiz sentido …

Bom ele no System.out.print ele diz que a lista ta vazia de verdade rs

e o NullPointer estora aqui :

if (d.listAll(Entity.class, ps, p).getResultList().isEmpty() == false)

Alguma sugestão ???

2 Respostas

_fs
DAOInterface d = mock(DAOInterface.class); 
...
d.listAll(...).getResultList()
...
when(d.listAll(Entity.class, ps, p)).thenReturn

Você está mockando a DAOInterface mas ao invocar o método listAll() ainda não está determinado um retorno. Ao fazer isso o mockito retorna um valor padrão, no casso null, causando a NPE.
Parece que basta colocar o when(…) antes da chamada.

DaianeMira

Mas ja nao está ???

when(d.listAll(Entity.class, ps, p)).thenReturn(
(Result) ResultFactory.getResult(
ResultsType.Result, resultList, null, null,
Boolean.TRUE)
);

Criado 18 de abril de 2012
Ultima resposta 18 de abr. de 2012
Respostas 2
Participantes 2