Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Junit 5 está funcionando no Cucumber?

Bom dia a todos

Eu sei que esses vídeos foram gravados à muito tempo atrás, e foi dito que naquela época o Cucumber só funciona com Junit 4, e não com o 5. Eu fiz esse teste em fevereiro de 2023 com o Junit 5 e deu certo. Código completo abaixo:

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;
import org.junit.jupiter.api.Assertions;

import java.math.BigDecimal;

public class PropondoLancesSteps {
    private Lance lance;
    private Leilao leilao;
    @Given("dando un lance valido")
    public void dando_un_lance_valido() {
        Usuario usuario = new Usuario("fulano");
        lance = new Lance(usuario, BigDecimal.TEN);
    }
    @When("quando propoe um lance")
    public void quando_propoe_um_lance() {
        leilao = new Leilao("Tablet");
        leilao.propoe(lance);
    }
    @Then("entao o lance é aceito")
    public void entao_o_lance_é_aceito() {
        Assertions.assertEquals(1,leilao.getLances().size());
        Assertions.assertEquals(BigDecimal.TEN,leilao.getLances().get(0).getValor());
    }
}

E para confirmar, forcei erros, como esses 2 exemplos e deu a exceção esperada:

        Assertions.assertEquals(3,leilao.getLances().size());

Mensagem de erro:

org.opentest4j.AssertionFailedError: expected: <3> but was: <1>
Expected :3
Actual   :1

Outro exemplo:

      Assertions.assertEquals(BigDecimal.TEN,leilao.getLances().get(1).getValor());

Mensagem de erro:

java.lang.IndexOutOfBoundsException: Index 1 out of bounds for length 1

Afinal, a versão atual do Cucumber já é compatível com o Junit 5 ou foi coincidência dar certo?

2 respostas

Acabei de ver a documentaçao do Cucumber, eles ainda recomendam o Junit 4 para o Cucumber regular.

Se quiser usar outra dependencia de testes, como o Jnuit 5, Java Hamcrest e AssertJ, é melhor utilizar o Cucumber JUnit Platform Engine.

Mas ainda nao entendi porque deu certo

solução!

Olá Murilo, tudo bem?

Embora a documentação do Cucumber ainda recomende o uso do JUnit 4 para o Cucumber regular, é possível usar outras dependências de testes como o JUnit 5. No entanto, é importante ressaltar que o uso do JUnit 5 com o Cucumber requer algumas configurações adicionais.

Uma das formas de utilizar o JUnit 5 com o Cucumber é através do Cucumber JUnit Platform Engine, que é uma biblioteca que permite executar testes escritos com o Cucumber no JUnit 5. Essa biblioteca faz a integração entre o Cucumber e o JUnit 5, permitindo que os testes sejam executados normalmente no ambiente de testes.

Provavelmente o seu código funcionou com o JUnit 5 por alguma compatibilidade existente ou por não ter tido conflitos com a sua configuração. Porém, é importante lembrar que utilizar o JUnit 5 com o Cucumber pode apresentar problemas de compatibilidade e pode ser necessário realizar ajustes e configurações adicionais para garantir o funcionamento correto dos testes.

Espero ter ajudado!