web-dev-qa-db-fra.com

exception java.lang.NoClassDefFoundError lors de l'exécution du test de concombre à l'aide de JUnit

J'essaie d'exécuter un test de concombre avec JUnit et je reçois Java.lang.NoClassDefFoundError exception.

Code JUnit:

package ctest;

import org.junit.runner.RunWith;

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

@RunWith(Cucumber.class)
@CucumberOptions(
features = "Feature"
,glue={"stepDefinition"}
)

public class Runner {

}

Exception:

Java.lang.NoClassDefFoundError: gherkin/formatter/Formatter
at Java.lang.ClassLoader.defineClass1(Native Method)
at Java.lang.ClassLoader.defineClass(Unknown Source)
at Java.security.SecureClassLoader.defineClass(Unknown Source)
at Java.net.URLClassLoader.defineClass(Unknown Source)
at Java.net.URLClassLoader.access$100(Unknown Source)
at Java.net.URLClassLoader$1.run(Unknown Source)
at Java.net.URLClassLoader$1.run(Unknown Source)
at Java.security.AccessController.doPrivileged(Native Method)
at Java.net.URLClassLoader.findClass(Unknown Source)
at Java.lang.ClassLoader.loadClass(Unknown Source)
at Sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at Java.lang.ClassLoader.loadClass(Unknown Source)
at cucumber.runtime.formatter.PluginFactory$1.<init>(PluginFactory.Java:53)
at cucumber.runtime.formatter.PluginFactory.<clinit>(PluginFactory.Java:52)
at cucumber.runtime.RuntimeOptions.<init>(RuntimeOptions.Java:69)
at cucumber.runtime.RuntimeOptionsFactory.create(RuntimeOptionsFactory.Java:25)
at cucumber.api.junit.Cucumber.<init>(Cucumber.Java:55)
at Sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at Sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at Sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at Java.lang.reflect.Constructor.newInstance(Unknown Source)
at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.Java:104)
at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.Java:86)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.Java:59)
at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.Java:26)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.Java:59)
at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.Java:33)
at org.Eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createUnfilteredTest(JUnit4TestLoader.Java:84)
at org.Eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.Java:70)
at org.Eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.Java:43)
at org.Eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.Java:444)
at org.Eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.Java:675)
at org.Eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.Java:382)
at org.Eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.Java:192)
Caused by: Java.lang.ClassNotFoundException: gherkin.formatter.Formatter
at Java.net.URLClassLoader$1.run(Unknown Source)
at Java.net.URLClassLoader$1.run(Unknown Source)
at Java.security.AccessController.doPrivileged(Native Method)
at Java.net.URLClassLoader.findClass(Unknown Source)
at Java.lang.ClassLoader.loadClass(Unknown Source)
at Sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at Java.lang.ClassLoader.loadClass(Unknown Source)
... 34 more

J'ai ajouté les fichiers jar Cucumber ci-dessous à Eclipse et ajouté le plugin Cucumber à Eclipse à partir de ce lien - http://cucumber.github.com/cucumber-Eclipse/update-site .

enter image description here

J'ai trouvé des questions similaires dans SE et j'ai essayé les suggestions mentionnées mais en vain. J'ai essayé de rétrograder Gherkin vers une version inférieure comme suggéré dans les liens ci-dessous. Mais cela ne règle pas le problème.

Les réponses aux questions ci-dessous ont suggéré d'ajouter la même version des fichiers de pot de concombre. Mais comme les fichiers jar disponibles dans le référentiel Maven lui-même n'ont pas la même version, je ne sais pas comment/où puis-je télécharger la même version de tous les fichiers jar de concombre.

Toute aide pour résoudre ce problème est très appréciée.

8
justcurious

Selon this , cucumber-Java-1.2.4 nécessite cornichon-2.12. 2 , pendant que vous fournissez gherkin-4.0.0.

Vous pouvez télécharger la version 2.12.2 depuis ici , supprimez la version 4.0.0 et voyez si cela fonctionne (vous devrez peut-être redémarrer Eclipse).

9
Kiril S.