Can';t运行cucumber测试-java.lang.NoSuchMethodError:cucumber.runtime.runtime。<;初始化>;

Can';t运行cucumber测试-java.lang.NoSuchMethodError:cucumber.runtime.runtime。<;初始化>;,java,selenium,cucumber,Java,Selenium,Cucumber,我尝试使用Stackoverlow解决方案多次运行cucumber,为其他人解决此问题。这对我不起作用 运行runnerfile时得到的stacktrace: java.lang.NoSuchMethodError: cucumber.runtime.Runtime.<init>(Lcucumber/runtime/io/ResourceLoader;Lcucumber/runtime/ClassFinder;Ljava/lang/ClassLoader;Lcucumber/runt

我尝试使用Stackoverlow解决方案多次运行cucumber,为其他人解决此问题。这对我不起作用

运行runnerfile时得到的stacktrace:

java.lang.NoSuchMethodError: cucumber.runtime.Runtime.<init>(Lcucumber/runtime/io/ResourceLoader;Lcucumber/runtime/ClassFinder;Ljava/lang/ClassLoader;Lcucumber/runtime/RuntimeOptions;)V

at cucumber.api.junit.Cucumber.createRuntime(Cucumber.java:80)
at cucumber.api.junit.Cucumber.<init>(Cucumber.java:59)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
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 com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:49)
at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:51)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:237)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)

如果有人能找到解决方案,那就太好了!:)

您应该使用与Cucumber JVM和Cucumber JUnit依赖项相同的Cucumber java依赖项版本,即POM.xml文件中的1.2.5。这应该可以解决问题

   <dependency>
        <groupId>info.cukes</groupId>
        <artifactId>cucumber-java</artifactId>
        <version>1.2.5</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>info.cukes</groupId>
        <artifactId>cucumber-jvm</artifactId>
        <version>1.2.5</version>
        <type>pom</type>
    </dependency>

    <dependency>
        <groupId>info.cukes</groupId>
        <artifactId>cucumber-junit</artifactId>
        <version>1.2.5</version>
        <scope>test</scope>
    </dependency>

信息杯
黄瓜爪哇
1.2.5
测试
信息杯
黄瓜
1.2.5
聚甲醛
信息杯
黄瓜刺柏
1.2.5
测试
也面临同样的问题。 对于gradle来说,使用这两个依赖项对我来说很有效

testCompile 'io.cucumber:cucumber-java:4.2.0'
testCompile 'io.cucumber:cucumber-junit:4.2.0'

我也有同样的问题,我能够通过将所有的info cukes cucumber依赖项更改为io.cumber dependences来解决这个问题

<!-- https://mvnrepository.com/artifact/io.cucumber/cucumber-java -->
<dependency>
    <groupId>io.cucumber</groupId>
    <artifactId>cucumber-java</artifactId>
    <version>4.3.0</version>
</dependency>

   <!-- https://mvnrepository.com/artifact/io.cucumber/cucumber-junit -->
<dependency>
    <groupId>io.cucumber</groupId>
    <artifactId>cucumber-junit</artifactId>
    <version>4.3.1</version>
    <scope>test</scope>
</dependency>

黄瓜
黄瓜爪哇
4.3.0
黄瓜
黄瓜刺柏
4.3.1
测试

添加具有相同版本的依赖项也解决了我的“山猫”问题

compile "io.cucumber:cucumber-java:4.2.6"
compile "io.cucumber:cucumber-java8:4.2.6"
compile "io.cucumber:cucumber-guice:4.2.6"
compile "io.cucumber:cucumber-junit:4.2.6"

你能检查一下java 1.0.0.RC14的版本吗?你确定吗?猜测它应该类似于1.2.5intellij自己添加的其他版本,但更改为1.2.5似乎无法解决问题,所以您提供的粘合选项也不正确。您需要提供java包,而不是实际路径。在你的情况下,试试“StepDefs”@蚱蜢谢谢你的提示!但仍然无法运行它。当我运行我在互联网上使用的Junit示例时(使用before-beforeclass-test-after-hooks之后,它就可以运行了。但是由于我尝试使用RunWith,它就不能运行了。我将我拥有的before/beforeclass与Junit组合到beforeclass中,并将其放在runner类中,我现在已经知道了。错误消息说,在运行时类中没有具有给定参数的构造函数(resourceloader、classloader、classfinder、runtime options)。我在版本1.2.5中检查了这个类的代码,它有这个构造函数。你有没有这个类的旧依赖项,比如层次结构中的多个版本?检查这个类所在的cucumber core jar。
<!-- https://mvnrepository.com/artifact/io.cucumber/cucumber-java -->
<dependency>
    <groupId>io.cucumber</groupId>
    <artifactId>cucumber-java</artifactId>
    <version>4.3.0</version>
</dependency>

   <!-- https://mvnrepository.com/artifact/io.cucumber/cucumber-junit -->
<dependency>
    <groupId>io.cucumber</groupId>
    <artifactId>cucumber-junit</artifactId>
    <version>4.3.1</version>
    <scope>test</scope>
</dependency>
compile "io.cucumber:cucumber-java:4.2.6"
compile "io.cucumber:cucumber-java8:4.2.6"
compile "io.cucumber:cucumber-guice:4.2.6"
compile "io.cucumber:cucumber-junit:4.2.6"