Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Erro na execução do LeilaoCucumberRunner

Esta ocorrendo o seguinte erro ao executar ;

java.lang.NullPointerException: Cannot invoke "br.com.alura.leilao.model.Leilao.propoe(br.com.alura.leilao.model.Lance)" because "this.leilao" is null at br.com.alura.leilao.acceptance.steps.PropondoLanceSteps.quando_propoe_o_lance(PropondoLanceSteps.java:34) at ✽.Quando propoe o lance(classpath:features/propondo_lances.feature:6)

package br.com.alura.leilao.acceptance;

import org.junit.runner.RunWith;

import io.cucumber.junit.Cucumber; import io.cucumber.junit.CucumberOptions;

@RunWith(Cucumber.class) @CucumberOptions(features = "classpath:features")

public class LeilaoCucumberRunner {

}

package br.com.alura.leilao.acceptance.steps;

import java.math.BigDecimal; import java.util.List;

import org.junit.jupiter.api.Assertions;

import br.com.alura.leilao.model.Lance; import br.com.alura.leilao.model.Leilao; import br.com.alura.leilao.model.Usuario; import io.cucumber.java.en.Given; import io.cucumber.java.en.Then; import io.cucumber.java.en.When;

public class PropondoLanceSteps {

private Leilao leilao;
private Lance lance;



@Given("Dado um lance valido")
public void dado_um_lance_valido() {
    
    Usuario usuario = new Usuario("fulano");
    new Lance(usuario, BigDecimal.TEN);
       
}

@When("Quando propoe o lance")
public void quando_propoe_o_lance() {
    
    new Leilao("Tablet XPTO");
    leilao.propoe(lance);
    
    
}
@Then("Entao o lance eh aceito")
public void entao_o_lance_eh_aceito() {
    
Assertions.assertEquals(1, leilao.getLances().size());
Assertions.assertEquals(BigDecimal.TEN, leilao.getLances().get(0).getValor());


    
    
    
    
}

} Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta
solução!

Olá, Valdemir

Parece que você está enfrentando um problema de NullPointerException. Isso geralmente ocorre quando tentamos acessar um método ou propriedade de um objeto que ainda não foi inicializado.

No seu código, parece que você está tentando acessar o método propoe() do objeto leilao no método quando_propoe_o_lance(), mas leilao ainda não foi inicializado.

Veja o código abaixo:

@When("Quando propoe o lance")
public void quando_propoe_o_lance() {
    new Leilao("Tablet XPTO");
    leilao.propoe(lance);
}

Você está criando uma nova instância de Leilao, mas não está atribuindo-a a leilao. Portanto, quando você tenta chamar leilao.propoe(lance);, leilao ainda é null.

Para resolver esse problema, você deve atribuir a nova instância de Leilao a leilao da seguinte maneira:

@When("Quando propoe o lance")
public void quando_propoe_o_lance() {
    leilao = new Leilao("Tablet XPTO");
    leilao.propoe(lance);
}

Além disso, percebi que você também não está atribuindo o novo Lance a lance no método dado_um_lance_valido(). Você deve fazer isso da seguinte forma:

@Given("Dado um lance valido")
public void dado_um_lance_valido() {
    Usuario usuario = new Usuario("fulano");
    lance = new Lance(usuario, BigDecimal.TEN);
}

Espero ter ajudado e bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software