运行 Cucumber JUnit 测试时出现初始化错误

新手上路,请多包涵
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/Element at java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.Class.privateGetDeclaredMethods(Unknown Source) at java.lang.Class.privateGetPublicMethods(Unknown Source) at java. lang.Class.getMethods(未知来源)在 cucumber.runtime.java.MethodScanner.scan(MethodScanner.java:40)在 cucumber.runtime.java.JavaBackend.loadGlue(JavaBackend.java:86)在 cucumber.runtime.Runtime。 (Runtime.java:91)在 cucumber.runtime.Runtime。(Runtime.java:69)在 cucumber.runtime.Runtime。(Runtime.java:65)在 cucumber.api.junit.Cucumber.createRuntime(Cucumber.java: 78) 在 cucumber.api.junit.Cucumber.(Cucumber.java:58) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance (未知来源)在 java.lang.reflect.Constructor.newInstance(未知来源)在 org.junit.internal.builders.AnnotatedBuilder.buildRunner(A 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) 在 org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:33) ) 在 org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createUnfilteredTest(JUnit4TestLoader.java:84) 在 org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:70) 在 org. eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:43) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:444) 在 org.eclipse.jdt。 internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675) 在 org.eclipse.jdt.internal.junit.runner。 RemoteTestRunner.run(RemoteTestRunner.java:382) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192) 引起:java.lang.ClassNotFoundException: org.dom4j.Element 在 java。 net.URLClassLoader.findClass(Unknown Source) 在 java.lang.ClassLoader.loadClass(Unknown Source) 在 sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 在 java.lang.ClassLoader.loadClass(Unknown Source) …还有 28 个

可能是什么问题呢?

原文由 Mohit Mair 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 464
1 个回答

问题是您的课程位于“黄瓜”包中。要么重命名包,要么将您的步骤定义和其他胶水代码移动到像“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 {}

原文由 Argelbargel 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题