1
resposta

Alterar o Junit5 para o Junit4

Criei a classe LeilaoCucumberRunner.java de acordo com o curso:

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 { }

Entretanto, a seguinte ocorreu o seguinte erro ao tentar executá-la:

java.lang.NoClassDefFoundError: org/junit/platform/commons/util/ClassNamePatternFilterUtils at org.junit.platform.launcher.core.LauncherFactory.loadAndFilterTestExecutionListeners(LauncherFactory.java:122) at org.junit.platform.launcher.core.LauncherFactory.create(LauncherFactory.java:108) at org.junit.platform.launcher.core.LauncherFactory.create(LauncherFactory.java:75) at org.eclipse.jdt.internal.junit5.runner.JUnit5TestLoader.(JUnit5TestLoader.java:34) at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:78) at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) at java.base/java.lang.reflect.ReflectAccess.newInstance(ReflectAccess.java:128) at java.base/jdk.internal.reflect.ReflectionFactory.newInstance(ReflectionFactory.java:350) at java.base/java.lang.Class.newInstance(Class.java:642) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.createRawTestLoader(RemoteTestRunner.java:371) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.createLoader(RemoteTestRunner.java:366) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.defaultInit(RemoteTestRunner.java:310) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.init(RemoteTestRunner.java:225) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:209) Caused by: java.lang.ClassNotFoundException: org.junit.platform.commons.util.ClassNamePatternFilterUtils at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:636) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:182) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:519) ... 16 more

1 resposta

Olá Thiago! O erro que você está recebendo indica que a classe "org.junit.platform.commons.util.ClassNamePatternFilterUtils" não foi encontrada. Isso pode estar acontecendo porque você está tentando executar o JUnit5 em vez do JUnit4.

Para alterar do JUnit5 para o JUnit4, você precisa mudar as importações das classes e anotações. Por exemplo, você deve mudar a importação do "org.junit.jupiter.api.Test" para "org.junit.Test". Além disso, você deve mudar a anotação "@RunWith" para "@RunWith(JUnit4.class)".

Sua classe LeilaoCucumberRunner.java deve ficar assim:

package br.com.alura.leilao.acceptance;

import org.junit.runner.RunWith; import org.junit.runners.JUnit4;

import cucumber.api.CucumberOptions; import cucumber.api.junit.Cucumber;

@RunWith(JUnit4.class) @CucumberOptions(features = "classpath:features") public class LeilaoCucumberRunner { }

Espero ter ajudado e bons estudos!