JUnit Mockito, dúvida, alguém por ai?

6 respostas
junit
M

Tenho o seguinte método e quero testá-lo através do mockito, junit, e tal
Porém existem algumas variáveis dentro do método que eu preciso setar para que não dê null exception e eu consiga rodar meu teste.
Gostaria de saber como fazer isso, de setar o valor de uma variável

private Rifa updateRifa(Rifa rifa) {
	Rifa newRifa = find(rifa.getId());
	if(newRifa.getEstado()==EstadoRifa.PENDENTE && !rifa.getUsuarios().isEmpty() || rifa.getUsuarios()==null) {
	List<Usuario> list = newRifa.getUsuarios();
	list.addAll(rifa.getUsuarios());
	newRifa.setUsuarios(list);
	}
	if(rifa.getNome()!=null) {
	newRifa.setNome(rifa.getNome());	
	}
	if(rifa.getEstado()!=null) {
		newRifa.setEstado(rifa.getEstado());		
	}
	if(rifa.getQuantidade()!=null) {
		newRifa.setQuantidade(rifa.getQuantidade());		
	}
	if(rifa.getSorteio()!=null) {
		newRifa.setSorteio(rifa.getSorteio());		
	}
	return newRifa;
	
}

6 Respostas

A

Oi @Matheus_Campelo,

Você nao falou quais variáveis precisa setar para nao dar null exception.

De qualquer forma, posso dar uma dica para facilitar seus testes.
Eu imagino que o método find(rifa.getId()) está indo num banco de dados (ou similar) para pegar os valores atuais da rifa. E a idéia é ir atualizando a variável newRifa com os valores passados no método como parâmetro.

Para simplificar seus testes, você pode remover esse find desse método e só deixar a lógica de combinar as duas rifas. Algo como:

Rifa combinarRifas(Rifa rifaAtual, Rifa rifaNova)

Daí no seu teste, você pode criar a rifa nova e a rifa atual como quiser (com nulos onde pode ser nulo, etc) e ter todos cenários relevantes.

E aliás, como esse método é regra de negócio da rifa e usa dados apenas da rifa, você pode colocá-lo na classe Rifa mesmo.

M

Eu gostaria de fazer testes unitários ao invés de testes de integração, o meu problema é que eu estou iniciando no conhecimento de testes, então estava querendo saber como eu posso definir um comportamento de uma variável, por exemplo, eu gostaria de setar a newRifa para valores que eu queira testar.

A

A dica que eu te dei ajuda justamente com esse problema.

J

Teste unitário neste caso não serve pra testar nada de fato.

A

Nisso eu discordo.
No código dele tem 5 if e pelo menos um deles tem um bug que um teste unitário ajudaria a encontrar. Nao vejo necessidade de teste de integraçao se toda a lógica é só manipulaçao de objetos.

J

Concordo se a rotina não depender de banco, mas teste fake é perda de tempo.

Criado 20 de abril de 2019
Ultima resposta 22 de abr. de 2019
Respostas 6
Participantes 3