java - 无法运行 cucumber 测试 - java.lang.NoSuchMethodError : cucumber. runtime.Runtime.<init>

标签 java selenium cucumber

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

我运行 runnerfile 的堆栈跟踪:

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)

进程结束,退出代码为 -1

我的 POM 文件

<groupId>selenium-siebel-new</groupId>
<artifactId>selenium</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-chrome-driver</artifactId>
        <version>2.43.1</version>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
    </dependency>
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-firefox-driver</artifactId>
        <version>2.53.1</version>
    </dependency>
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-ie-driver</artifactId>
        <version>2.43.1</version>
    </dependency>
    <dependency>
        <groupId>info.cukes</groupId>
        <artifactId>cucumber-java</artifactId>
        <version>1.0.0.RC14</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>info.cukes</groupId>
        <artifactId>cucumber-core</artifactId>
        <version>1.2.5</version>
    </dependency>
    <dependency>
        <groupId>info.cukes</groupId>
        <artifactId>cucumber-junit</artifactId>
        <version>1.2.5</version>
    </dependency>
    <dependency>
        <groupId>info.cukes</groupId>
        <artifactId>cucumber-jvm</artifactId>
        <version>1.2.5</version>
    </dependency>
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-support</artifactId>
        <version>2.43.1</version>
    </dependency>
</dependencies>
</project>

我的运行者 java 类:

@RunWith(Cucumber.class)
@CucumberOptions(
    features = "src/test/Resources/featurefiles",
    glue = "src/test/java/StepDefs/OpenSummaryPageStepDefs.java"
)
public class ChromeRunner {

private static ChromeDriverService service;

@BeforeClass
public static void createAndStartService() throws IOException {
    service = new ChromeDriverService.Builder()
            .usingDriverExecutable(new File    ("src/main/resources/drivers/chromedriver.exe"))
            .usingAnyFreePort()
            .build();
    service.start();

}
@AfterClass
public static void createAndStopService() {
    service.stop();
}
}

如果有人有解决方案就好了!:)

最佳答案

您应该使用与 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>

关于java - 无法运行 cucumber 测试 - java.lang.NoSuchMethodError : cucumber. runtime.Runtime.<init>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40992750/

相关文章:

selenium - 何时使用隐式等待以及在何处使用

ruby-on-rails - Cucumber/Webrat 未遵循 redirect_to

Java - 一种不重复NIF的方法

java - 使用jboss5线程池启动线程

java - Selenium:element.clear() 在 sendKeys() 之前触发 javascript

java - 如何在通过特征文件中的标记后运行方法?

ruby - 如何使用 Cucumber Ruby Automation 打印浏览器控制台日志?

javascript - 在命令提示符中运行 .class 文件

java - 有没有办法使用用户输入的字符串作为另一个类的方法调用的一部分

javascript - Selenium C# 如何获取 IWEbElement 中的文本