无法在Eclipse中运行组件测试

时间:2014-08-21 21:47:57

标签: java junit cucumber-jvm

我们正在使用黄瓜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

我在谷歌搜索但这个问题看起来更通用,所以无法得到答案。

4 个答案:

答案 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

参考:https://github.com/junit-team/junit/issues/1083

答案 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)。