我们正在使用黄瓜java在我们的项目中实现组件测试。下面是测试运行器类。
import org.junit.runner.RunWith;
import cucumber.api.junit.Cucumber;
@RunWith(Cucumber.class)
@Cucumber.Options(format={"pretty"})//, features="classpath:component/features/*.feature")
public class RunAllComponentCukesTest {
}
当我通过这个类运行组件测试时,它运行正常。现在它没有。我不知道这有什么问题。我认为它可能是类路径问题。我改变了路径,我只是运行所有测试但无论如何它都不起作用。如果从命令提示符运行它可以正常工作。
我收到以下错误消息:
cucumber.runtime.CucumberException: Failed to create scenario runner
at cucumber.runtime.junit.FeatureRunner.buildFeatureElementRunners(FeatureRunner.java:85)
at cucumber.runtime.junit.FeatureRunner.<init>(FeatureRunner.java:31)
at cucumber.api.junit.Cucumber.addChildren(Cucumber.java:90)
at cucumber.api.junit.Cucumber.<init>(Cucumber.java:62)
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.JUnit4TestReference.<init>(JUnit4TestReference.java:33)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestClassReference.<init>(JUnit4TestClassReference.java:25)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:48)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:452)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: org.junit.runners.model.InitializationError
at org.junit.runners.ParentRunner.validate(ParentRunner.java:418)
at org.junit.runners.ParentRunner.<init>(ParentRunner.java:84)
at org.junit.runners.Suite.<init>(Suite.java:112)
at cucumber.runtime.junit.ExamplesRunner.<init>(ExamplesRunner.java:19)
at cucumber.runtime.junit.ScenarioOutlineRunner.<init>(ScenarioOutlineRunner.java:21)
at cucumber.runtime.junit.FeatureRunner.buildFeatureElementRunners(FeatureRunner.java:81)
... 21 more
我在谷歌搜索但这个问题看起来更通用,所以无法得到答案。
答案 0 :(得分:2)
我开始得到这个错误似乎也无处可寻。
问题:看起来 cucumber.runtime.junit.ExamplesRunner 与 org.junit.validator.PublicClassValidator 之间存在不兼容的的junit-4.12-β-1.jar 即可。
PublicClassValidator抛出一条带有消息的异常:
“班级cucumber.runtime.junit.ExamplesRunner不公开。”
我只能通过调试器逐步显示此消息。
我正在导入最新的4. +版junit,目前是4.12-beta-1。这就是为什么问题似乎无处不在的原因。我想我有一段时间没有刷新我的依赖项。
解决方案:我又回到 junit-4.11.jar ,错误不再发生。
答案 1 :(得分:1)
这是一个老问题,但万一有人碰巧在这里降落,解决方法是使用cucumber-junit 1.2.2
答案 2 :(得分:0)
我改变了eclipse的版本,它在新日食中运行良好。但是我无法弄清楚究竟是什么问题
答案 3 :(得分:0)
获得帮助/关于Eclipse,单击&#34;安装详细信息&#34;。选择&#34; Cucumber Eclipse Feature&#34;然后单击&#34;更新...&#34;。如果您的插件是最新的,请不要担心......
现在打开你的POM文件(Maven Project)并设置工件&#34; cucumber-java&#34;,&#34; cucumber-jvm&#34;和&#34; cucumber-junit&#34;至少1.2.2版(junit必须至少为4.11)。