danilomobr Postado Setembro 14, 2018 Denunciar Share Postado Setembro 14, 2018 Pessoal, eu estou fazendo teste unitário usando o JUnit, porém ao realizar o teste de uma classe, alguns metodos me retornaram erro: java.lang.NullPointerException Pelo que eu entendi ele está dizendo que ao passar um valor "nulo" por parametro em um metodo irá dar erro, ou seja, não é permitido valor nulo. Eu então fiz uma validação para verificar antes se o valor é diferente de nulo e assim poder executar a procura do dado. Porém mesmo fazendo isso o erro persiste. Segue abaixo o código: public String getVeiculo(Integer id) { String nomeVeiculo = ""; if (id != null) { Veiculo veiculo = this.veiculoFacade.find(id); nomeVeiculo = veiculo.getNome(); } return nomeVeiculo; } public Veiculo(Integer id, String nome) { this.id = id; this.nome = nome; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } Metodo de teste Junit public void testGetVeiculo() { System.out.println("Rodando Teste getVeiculo"); Double custo = 1.0; Integer actual = 1; List<Veiculo> expected = Arrays.asList( new Veiculo(1, "Caminhão baú", BigDecimal.valueOf(custo)) ); //Test equals assertEquals(expected, v.getVeiculo(actual)); assertThat(expected, is(v.getVeiculo(actual))); //Test check empty list assertThat(actual, is(not(empty()))); } Agradeço quem puder me ajudar. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 danilomobr Postado Setembro 14, 2018 Autor Denunciar Share Postado Setembro 14, 2018 Ao executar o teste no JUnit ele ta retornando isso: Testcase: testGetVeiculo(controller.VeiculoControllerTest): Caused an ERROR null java.lang.NullPointerException at controller.VeiculoController.getVeiculo(VeiculoController.java:54) at controller.VeiculoControllerTest.testGetVeiculo(VeiculoControllerTest.java:108) Test controller.VeiculoControllerTest FAILED Pelo que eu entendi, o erro esta nessa linha: Veiculo veiculo = this.veiculoFacade.find(id); Porém, se eu executo o projeto, não da nenhum erro, retornando assim o nome do veiculo pelo id (inteiro) enviado. Só está dando erro mesmo é na hora de testar. Eu ainda não consegui descobrir porque ele insiste em retornar "null", se eu passei o valor da variavel no arquivo de teste. Além disso, eu coloquei mais a validação no metodo testado. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 danilomobr Postado Setembro 15, 2018 Autor Denunciar Share Postado Setembro 15, 2018 (editado) Eu coloquei um "try catch" no metodo getVeiculo() da classe VeiculoController, segue abaixo como ficou: public String getVeiculo(Integer id) { String nomeVeiculo = ""; try { Veiculo veiculo = this.veiculoFacade.find(id); nomeVeiculo = veiculo.getNome(); } catch (Exception e) { System.out.println(e); } return nomeVeiculo; } Por ao executar o teste no JUnit o erro continua persistindo: Testcase: testGetVeiculo(controller.VeiculoControllerTest): FAILED expected:<[entities.Veiculo[ id=1, nome='Caminhão baú', custo=1.0 ]]> but was:<> junit.framework.AssertionFailedError: expected:<[entities.Veiculo[ id=1, nome='Caminhão baú', custo=1.0 ]]> but was:<> at controller.VeiculoControllerTest.testGetVeiculo(VeiculoControllerTest.java:108) Isso está muito estranho, porque o método que ele entra é do próprio faces facade, ou seja, não era para retornar erro. Por favor, alguém já passou por isso ou sabe ao menos como evitar esse erro ao testar? Editado Setembro 29, 2018 por danilomobr Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Visitante Postado Outubro 13, 2018 Denunciar Share Postado Outubro 13, 2018 (editado) Olá, @danilomobr Ajudaria muito se você passasse o código todo, por exemplo, os atributos da classe (que presumo ser algo como Veiculo) e como você está instanciando os objetos das classes, etc... Do modo como você postou seu código fika difícil dar uma resposta adequada Por enquanto vou apenas passar esse link com respeito a uma exception do tipo NullPointerException NullPointerException - Principais causas Editado Outubro 16, 2018 por Visitante correção no comentário Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 danilomobr Postado Outubro 21, 2018 Autor Denunciar Share Postado Outubro 21, 2018 (editado) Oi @giu_d_ Finalmente alguém respondeu 🙂 Segue abaixo todo o código no Github:https://github.com/danilomeneghel/prova_jee Editado Outubro 21, 2018 por danilomobr Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Visitante Postado Outubro 29, 2018 Denunciar Share Postado Outubro 29, 2018 (editado) @danilomobr Não consegui rodar o projeto ainda, mas a questão é a seguinte: Em métodos getters não se usa parâmetros. Esses métodos são usados apenas para retornar o valor de um atributo da classe que está definido como privado ou protegido (private ou protected), que é um assunto relacionado ao encapsulamento. Pelo que estou vendo aí no seu código há um erro no conceito de orientação a objetos. Estudei sobre orientação a objetos tanto em Java como em C++, e devo confessar q não é comum e, sendo sincero, não encontrei e nem fiz algo como métodos getters com parâmetros Pelo nome do método (getVeiculo) ele não deveria receber parâmetros e deveria retornar um objeto da classe Veiculo e não apenas um atributo dessa classe, que no caso é o nome do veiculo. Consegue entender esse ponto? Seria interessante dar uma revisada com respeito a essa questão Não sei se consegui passar de maneira clara o modo como vejo isso, que foi como aprendi, mas creio que deu para entender o ponto onde quis chegar Foi a primeiro ponto que me chamou a atenção ao ver seu código Veja como eu faria a assinatura desse seu método: public Veiculo getVeiculo() Veja um simples exemplo que pequei aqui para mostra isso: public Jogada obterJogada() throws JogadaInvalidaException { String str = Console.readString(); // Lê do teclado a jogada do usuário return new Jogada(str); // retorna a jogada feita ou lança uma exceção se a jodada for inválida, exceção essa que será tratada } Considere isso q falei e qualquer coisa é só perguntar Obs: Pode não ser isso o motivo dessa exceção do tipo NullPointerException, mas é algo que deve ser ajustado em seu código Editado Outubro 29, 2018 por Visitante Corrigir código Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Visitante Postado Outubro 29, 2018 Denunciar Share Postado Outubro 29, 2018 (editado) @danilomobr Já pensou em algo assim caso queira deixar esse método getVeiculo como está: assertEquals(expected, v.getVeiculo(new Integer(1))); Experimenta aí Editado Outubro 29, 2018 por Visitante Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
danilomobr
Pessoal, eu estou fazendo teste unitário usando o JUnit, porém ao realizar o teste de uma classe, alguns metodos me retornaram erro:
java.lang.NullPointerException
Pelo que eu entendi ele está dizendo que ao passar um valor "nulo" por parametro em um metodo irá dar erro, ou seja, não é permitido valor nulo.
Eu então fiz uma validação para verificar antes se o valor é diferente de nulo e assim poder executar a procura do dado.
Porém mesmo fazendo isso o erro persiste.
Segue abaixo o código:
public String getVeiculo(Integer id) { String nomeVeiculo = ""; if (id != null) { Veiculo veiculo = this.veiculoFacade.find(id); nomeVeiculo = veiculo.getNome(); } return nomeVeiculo; }
public Veiculo(Integer id, String nome) { this.id = id; this.nome = nome; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; }
Metodo de teste Junit
Agradeço quem puder me ajudar.
Link para o comentário
Compartilhar em outros sites
6 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.