junit - Não consigo testar JUnit - erro
Perguntas � junit � Não consigo testar JUnit - erro
Não consigo testar JUnit - erro
Olá estou com problemas para testar um básico método:
int qtdCelula10 = 0;
int qtdCelula20 = 0;
int qtdCelula50 = 10;
public void DefinirQuantidadeDeCelulasDisponiveis(int qtdCelula10, int qtdCelula20, int qtdCelula50){
this.qtdCelula10 = qtdCelula10;
this.qtdCelula20 = qtdCelula20;
this.qtdCelula50 = qtdCelula50;
e o TesteReservatorio:
Reservatorio reserv1 = new Reservatorio();
assertNotNull(reserv1.DefinirQuantidadeDeCelulasDisponiveis(A, B, C));
Esta dando erro nesse assert. Por favor gostaria de saber onde está o erro, se programei errado. Abraço.
Amigo, o assertNotNull() como também o assertNull() esperam algum retorno do método DefinirQuantidadeDeCelulasDisponiveis(), porem ele é void e, não retorna nada, nem null.
reserv1.DefinirQuantidadeDeCelulasDisponiveis(A, B, C);
assertNotNull(reserv1.qtdCelula10);
assertNotNull(reserv1.qtdCelula20);
assertNotNull(reserv1.qtdCelula30);
Não é uma abordagem correta, pois o que deve ser testado é o método e não propriedades.
Uma recomendação é: refatore este método, implementando algum retorno e, este retorno que deve ser testado.
Conforme sua pretensão em ver o resultado de falha ao invocar o método assertNotNull, vamos refatorar seu método, implementado uma soma entre os parâmetros e, se soma for superior a 100, retorna um objeto, caso negativo, retorna null.
public static Integer DefinirQuantidadeDeCelulasDisponiveis(int a, int b, int c) {
Integer resposta = null;
if(a + b + c > 100)
resposta = a + b + c;
// Este método vai produzir uma falha pois, os argumentos somados não vão atingir 100 e o método retornará null;
public void testeAssertionNotNull() {
org.junit.Assert.assertNotNull(DefinirQuantidadeDeCelulasDisponiveis(1,3,5));
// Este método vai passar pois, os argumentos somados será superior a 100 e o método retornará o valor da soma;
org.junit.Assert.assertNotNull(DefinirQuantidadeDeCelulasDisponiveis(30,50,60));
Romero deu certo, mais tento outros valores nas variáveis e nçao da erro, quero que dê erro no JUnit, essa é a intenção do exercício acadêmico. Você me dizer porque não da erro? Mas o que você fez está correto sim.
— thedark.10013 18 de abr de 2015
thedark, então o fundamento de que os métodos assert*() precisam analisar um retorno, está ok? Bom, baseado nesta premissa, entenda(leia) o método assim > assertNotNul() = certifiqueQue_IssoNaoSejaNulo em outras palavras, o método assertNotNull() deve receber um valor e verificar se o valor não seja nulo, caso for nulo, então lançará a exceção(o erro). Em contrapartida, o método assertNull() = cerfifiqueQue_IsseSejaNulo() o método assertNull() deverá verificar se o retorno é nulo, se for, está tudo bem, agora se não for, lançara a exceção (o erro). Precisando, estamos ai. abrç
— Romero Dias 18 de abr de 2015
Sim entendi, bela explicação. Só que quando coloco o valor de 0, por exemplo na variável A e clico em Run pra rodar, o JUnit não dá erro, ele tica como ok, teste passou, só que eu queria que desse erro
— thedark.10013 19 de abr de 2015
Quando vc coloca 0(zero) o Java faz um autoboxing transformando esse valor em Integer, portanto não será null. Para responder sua dúvida, editei o post da resposta, de uma olhada.
— Romero Dias 19 de abr de 2015
Esse seria um jeito mais fácil de mostrar quantas cédulas existem no Reservatório? Porque no Reservatório possui 10 notas de R$ 50,00 = R% 500,00.
Na verdade, vc quem deve responder a essa pergunta. Vc deve desenvolver um método que retorne algum valor e, é este valor que será testado. Ex. Se o reservatório deve possuir 10 cédulas, então o retorno do seu método poderia ser a quantidade de cédulas do reservatório. E, então, escreva um teste para verificar se o valor retornado é menor do que 10.
Não é a resposta que estava procurando? Procure outras perguntas com as tags junit java testes testng ou faça a sua própria pergunta.