JUnit 测试黄瓜中的初始化错误(NoClassFound - IGherkinDialectProvider)
InitializationError in JUnit Test Cucumber ( NoClassFound - IGherkinDialectProvider )
我是第一次创建 Cucumber 项目。
我正在使用 Eclipse。我没有按照一些教程创建 Maven project.I 并创建了 Java Project.Where 我手动添加了 JAR 文件。
JAR 文件列表:
黄瓜核心 4.0.0.jar
黄瓜-java-4.0.0.jar
黄瓜-junit-4.0.0.jar
黄瓜-jvm-deps-1.0.6.jar
小黄瓜-6.0.0.jar
junit-4.12.jar
mockito-all-1.10.19.jar
我创建了功能文件:
功能:Google 主页
此功能验证 Google 主页
上的功能
Scenario: Check that main elements on Google Homepage are displayed
Given I launch Chrome browser
When I open Google Homepage
Then I verify that the page displays search text box
And the page displays Google Search button
And the page displays Im Feeling Lucky button
我已经创建了 TestRunner Class
package testRunners;
import org.junit.runner.RunWith;
import cucumber.api.junit.Cucumber;
import cucumber.api.CucumberOptions;
@RunWith(Cucumber.class)
@CucumberOptions(,features="resources/features", glue="")
public class TestRunner_FirstScenario {
}
我尝试 运行 这个 class 作为 JUnit 测试。然后我得到错误,我将在 post.
的末尾添加错误
我不认为原因是我没有 StepDefinitions class.I 认为 JAR 版本存在一些兼容性问题,但我使用的是最新版本。
错误是:
TestRunner_FirstScenario
testRunners.TestRunner_FirstScenario
initializationError(testRunners.TestRunner_FirstScenario)
java.lang.NoClassDefFoundError: gherkin/IGherkinDialectProvider
at cucumber.runtime.RuntimeOptionsFactory.create(RuntimeOptionsFactory.java:23)
at cucumber.api.junit.Cucumber.<init>(Cucumber.java:84)
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: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 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)
Caused by: java.lang.ClassNotFoundException: gherkin.IGherkinDialectProvider
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 19 more
如果你在 maven central 上检查 cucumber 的 POM,你会发现它依赖于 Gherkin 5.1.0 而不是 6.0.0。
https://search.maven.org/artifact/io.cucumber/cucumber-jvm/4.0.0/jar
我建议您使用依赖管理工具,而不是手动收集 jar 文件。 maven 和 gradle 都是很好的选择。
我是第一次创建 Cucumber 项目。 我正在使用 Eclipse。我没有按照一些教程创建 Maven project.I 并创建了 Java Project.Where 我手动添加了 JAR 文件。 JAR 文件列表: 黄瓜核心 4.0.0.jar 黄瓜-java-4.0.0.jar 黄瓜-junit-4.0.0.jar 黄瓜-jvm-deps-1.0.6.jar 小黄瓜-6.0.0.jar junit-4.12.jar mockito-all-1.10.19.jar
我创建了功能文件: 功能:Google 主页 此功能验证 Google 主页
上的功能Scenario: Check that main elements on Google Homepage are displayed
Given I launch Chrome browser
When I open Google Homepage
Then I verify that the page displays search text box
And the page displays Google Search button
And the page displays Im Feeling Lucky button
我已经创建了 TestRunner Class
package testRunners;
import org.junit.runner.RunWith;
import cucumber.api.junit.Cucumber;
import cucumber.api.CucumberOptions;
@RunWith(Cucumber.class)
@CucumberOptions(,features="resources/features", glue="")
public class TestRunner_FirstScenario {
}
我尝试 运行 这个 class 作为 JUnit 测试。然后我得到错误,我将在 post.
的末尾添加错误我不认为原因是我没有 StepDefinitions class.I 认为 JAR 版本存在一些兼容性问题,但我使用的是最新版本。
错误是:
TestRunner_FirstScenario
testRunners.TestRunner_FirstScenario
initializationError(testRunners.TestRunner_FirstScenario)
java.lang.NoClassDefFoundError: gherkin/IGherkinDialectProvider
at cucumber.runtime.RuntimeOptionsFactory.create(RuntimeOptionsFactory.java:23)
at cucumber.api.junit.Cucumber.<init>(Cucumber.java:84)
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: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 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)
Caused by: java.lang.ClassNotFoundException: gherkin.IGherkinDialectProvider
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 19 more
如果你在 maven central 上检查 cucumber 的 POM,你会发现它依赖于 Gherkin 5.1.0 而不是 6.0.0。
https://search.maven.org/artifact/io.cucumber/cucumber-jvm/4.0.0/jar
我建议您使用依赖管理工具,而不是手动收集 jar 文件。 maven 和 gradle 都是很好的选择。