运行Cucumber JUnit测试时的InitializationError

package cucumber; import org.junit.runner.RunWith; import cucumber.api.CucumberOptions; import cucumber.api.junit.Cucumber; @RunWith(Cucumber.class) @CucumberOptions( format={"pretty"}, features= "src/features/" ) public class cucumberRunner { } 

使用:

  • 黄瓜核心-1.2.4
  • 黄瓜Java的1.2.4
  • 黄瓜的junit-1.2.4
  • JUnit的-4.12
  • Eclipse Mars.1
  • java 8

错误跟踪:

java.lang.NoClassDefFoundError:org / dom4j / java上java.lang.Class.privateGetDeclaredMethods(未知来源)的java.lang.Class.getDeclaredMethods0(本地方法)中的元素java.lang上的java.lang.Class.privateGetPublicMethods(未知来源)。位于cucumber.runtime.java.JavaBackend.loadGlue(JavaBackend.java:86)的cucumber.runtime.Runtime.Runtime的cucumber.runtime.java.MethodScanner.scan(MethodScanner.java:40)中的lang.Class.getMethods(未知来源)。 (runtime.java:91)在cucumber.runtime.Runtime。(Runtime.java:69)在cucumber.runtime.Runtime。(Runtime.java:65)在cucumber.api.junit.Cucumber.createRuntime(Cucumber.java: 78)在gree.api.junit.Cucumber。(Cucumber.java:58)at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)at sun.reflect.DelegatingConstructorAccessorImpl.newInstance (未知来源)atg.junit.internal.builders.AnnotatedBuilder.buildRunner(A中的java.lang.reflect.Constructor.newInstance(未知来源) nnotatedBuilder.java:104)org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:86)org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)org.junit.internal .builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26)org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:33 )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)位于org.eclipse.jdt的org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:444)。 org.eclipse.jdt.internal.junit.runner中的internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)。 RemoteGestRunner.run(RemoteTestRunner.java:382)位于org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)引起:java.lang.ClassNotFoundException:java的org.dom4j.Element。 java.lang.ClassLoader.findClass(未知来源)at java.lang.ClassLoader.loadClass(未知来源)at sun.misc.Launcher $ AppClassLoader.loadClass(Unknown Source)at java.lang.ClassLoader.loadClass(Unknown Source)…还有28个

可能是什么问题呢?

问题是你的class级位于’黄瓜’包中。 重命名包或将步骤定义和其他胶水代码移动到像’cucumber.steps’这样的子包,并限制胶水代码查找到此包:

 package cucumber; import cucumber.api.CucumberOptions; import cucumber.api.junit.Cucumber; import org.junit.runner.RunWith; @RunWith(Cucumber.class) @CucumberOptions( format={"pretty"}, features= "src/features/", glue = "cucumber.steps") public class cucumberRunner {}