运行 Cucumber Junit 测试时出错:Intializationerror

Error when running Cucumber Junit test :Intializationerror

我正在尝试 运行 黄瓜测试,但出现以下异常。我将这些罐子与他们的版本一起使用

这是我的项目:

这是 testRunner class 代码:

    package cucumberTest;

import org.junit.runner.RunWith;
import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;

@RunWith(Cucumber.class)
@CucumberOptions(
        features = "Feature"
        ,glue={"stepDefinition"}
        )

        public class TestRunner {

        }

在 logIn.feature 文件中:

功能:登录操作测试

场景:使用有效凭据成功登录 给定用户在主页上 当用户导航到登录页面时 然后用户输入用户名和密码 然后提示登录成功

场景:注销成功 当用户从应用程序注销时 然后消息显示LogOut Successfully

根据 this,cucumber-java-1.2.5 需要 gherkin-2.12.2,而我提供的是 gherkin-4.1.13

所以我从 here 下载了 2.12.2 版,删除了 4.1.13 版,它对我有用(我对项目进行了清理)。

我是新手,还在学习。我收到了类似的 'cucumber runner initialization error' 消息:

java.lang.NoSuchMethodError: cucumber.runtime.RuntimeOptionsFactory.<init>(Ljava/lang/Class;[Ljava/lang/Class;)V
    at cucumber.api.junit.Cucumber.<init>(Cucumber.java:59)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:29)
    at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:21)
    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:26)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createUnfilteredTest(JUnit4TestLoader.java:87)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:73)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:46)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:522)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:760)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:460)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:206)

Referenced Libraries <= 我遇到错误时的罐子。然后,我用 cucumber-junit-1.2.2.jar 替换了我的 cucumber-junit-1.1.5.jar,现在错误消息已解决。我现在可以 运行 我的黄瓜 junit 测试了。 我从最新的罐子开始,但它们似乎有问题。然后我尝试了几种不同的组合。我读到 'rule of thumb' 三个 jar(-core、-java 和 -junit)需要是同一版本。只有这样我才能 运行 我的功能文件和 junit 测试。

我目前的工作 jar 是:

gherkin-2.12.2
cucumber-core-1.2.2
cucumber-java-1.2.2
cucumber-junit-1.2.2
cucumber-html-0.2.3
cucumber-jvm-deps-1.0.3
hamcrest-all-1.3
junit-4.11
selenium-server-standalone-3.13.0

希望对您有所帮助。