首页 文章

运行Cucumber JUnit测试时的InitializationError

提问于
浏览
0
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 {

}

使用:

  • cucumber-core-1.2.4

  • cucumber-java-1.2.4

  • cucumber-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(Native Method)中的元素java.lang.Class.privateGetPublicMethods(未知来源)来自cucumber.runtime.Runtime.Runtime的cucumber.runtime.java.JavaBackend.loadGlue(JavaBackend.java:86)的cucumber.runtime.java.MethodScanner.scan(MethodScanner.java:40)中的.lang.Class.getMethods(未知来源) . (运行时.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 . org.junit.internal.builders.AnnotatedBuilder.buildRunner上的java.lang.reflect.Constructor.newInstance(未知来源)中的newInstance(未知来源) (AnnotatedBuilder.java:104)位于org.junit的org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)的org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:86) . org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:)中的org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)中的internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26) 33)atg.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createUnfilteredTest(JUnit4TestLoader.java:84)org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:70)at org位于org.eclipse.jdt的org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:444)的.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:43) .internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)org.eclipse.jdt.internal.junit.runne r.RemoteTestRunner.run(RemoteTestRunner.java:382)at or.e.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)引起:java.lang.ClassNotFoundException:org.dom4j.Element at java.lang.ClassLoader.findClass(未知来源),位于java.lang.ClassLoader.loadClass(未知来源),位于java.lang.ClassLoader.loadClass(未知来源)的sun.misc.Launcher $ AppClassLoader.loadClass(未知来源) . ..还有28个

可能是什么问题呢?

1 回答

  • 3

    问题是你的 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 {}
    

相关问题