运行 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
希望对您有所帮助。
我正在尝试 运行 黄瓜测试,但出现以下异常。我将这些罐子与他们的版本一起使用
这是我的项目:
这是 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
希望对您有所帮助。