Teste de software

Ola boa tarde, como faco para lancar a excessao aqui nesse caso, estou fazendo uns TESTES, e aqui quero que lance o erro de excessao mais quando executo ele ocorre tudo beim e nao dar ERRO, meu objetivo é dar o erro…

@Test(expected = Exception.class) public void DesempilharPilhaVazia(){ Assert.assertThat(pilha.estaVazia(), is(true)); pilha.desempilhar(); fail("A pilha não deu erro"); }

Certeza que este metodo está dando excessão ?

rapaz ele executa e fica verde o test, mais ele tem que dar excessao…

no caso tem algo errado

Vamos la

Salvo Engano, o metodo fail vai lançar uma Exception ( algo como uma AssertionException ).

portanto se tanto o fail quanto o .desempilhar lançarem qq exception, o teste vai passar.

por conta das regras de exception, vc é obrigado a tratar, avisar que o metodo vai deixar passar" qualquer Exception EXCETO as RuntimeException e suas filhas. por que? uma longa historia.

da pra perceber que o desempilhar lança uma RuntimeException, assim como fail.

Como resolver isso? tenho minhas sugestões:

  1. Crie a SUA exception. seja estendendo RuntimeException ou Exception normal. E ai na assertion vc espera esse tipo especifico

  2. remove este fail, ele não serve pra nada. vc diz “o teste é esperar uma Exception”. não tem pq colocar esse fail. se o .desempilhar não explodir, o seu teste vai falhar.

boa sorte

Sim, eu simulei este caso ai. P/ dar erro de que este metodo nao pode ocorrer se a pilha estiver vazia eu utilizei um pilha.get(0) então irá dar IndexOutOfBoundsException. Aparenta o problema está no metodo pilha.desempilhar(). Posta o codigo desse metodo por gentileza.

EDIT:
Agora com a imagem entendi. Mano não está errado, procede da forma que você pediu, seu metodo está esperando a exception e ela deu, então testes OK …

esta ai amigo de uma olhada

vamos la

se vc nao tem nada e vai desempilhar, quando vc chamar atual.getProximo() isso vai explodir um NullPointerException.

isso é ruim. bem ruim. mas ok, é uma escolha.

NullPointerException é

https://docs.oracle.com/javase/7/docs/api/java/lang/NullPointerException.html

public class NullPointerException
extends RuntimeException

sugestão:

verifica se o topo é null antes de desempilhar. se for faz qq coisa MENOS lançar um NullPointerException. é feio.