Java 无法在Eclipse中运行组件测试

Java 无法在Eclipse中运行组件测试,java,junit,cucumber-jvm,Java,Junit,Cucumber Jvm,我们在项目中使用cucumber 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 RunAllCompon

我们在项目中使用cucumber 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
cucumber.runtime.CucumberException:无法创建场景运行器
在cucumber.runtime.junit.FeatureRunner.buildFeatureElementRunners(FeatureRunner.java:85)中
在cucumber.runtime.junit.FeatureRunner(FeatureRunner.java:31)中
位于cumber.api.junit.cumber.addChildren(cumber.java:90)
cumber.api.junit.cumber.(cumber.java:62)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance(未知源)
位于sun.reflect.delegatingConstructor或AccessorImpl.newInstance(未知源)
位于java.lang.reflect.Constructor.newInstance(未知源)
位于org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:104)
位于org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:86)
位于org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
位于org.junit.internal.builders.AllDefaultPossibilityBuilder.runnerForClass(AllDefaultPossibilityBuilder.java:26)
位于org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
位于org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:33)
位于org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference。(JUnit4TestReference.java:33)
位于org.eclipse.jdt.internal.junit4.runner.JUnit4TestClassReference。(JUnit4TestClassReference.java:25)
位于org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:48)
位于org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:38)
位于org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:452)
位于org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
位于org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
位于org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
原因:org.junit.runners.model.InitializationError
位于org.junit.runners.ParentRunner.validate(ParentRunner.java:418)
在org.junit.runners.ParentRunner上(ParentRunner.java:84)
位于org.junit.runners.Suite.(Suite.java:112)
在cucumber.runtime.junit.ExamplesRunner中。(ExamplesRunner.java:19)
在cucumber.runtime.junit.ScenarioOutlineRunner中。(ScenarioOutlineRunner.java:21)
在cucumber.runtime.junit.FeatureRunner.buildFeatureElementRunners(FeatureRunner.java:81)中
... 还有21个

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

我更改了eclipse的版本,它在新的eclipse中运行良好。但我无法找出到底是什么问题。

我开始发现这个错误,似乎也是无中生有

问题:junit-4.12-beta-1.jar中的cucumber.runtime.junit.ExamplesRunner和org.junit.validator.PublicClassValidator之间似乎不兼容

PublicClassValidator引发异常,并显示以下消息:

“cucumber.runtime.junit.ExamplesRunner类不是公共类。”

我只能通过使用调试器单步显示此消息

我正在导入junit的最新4.+版本,目前是4.12-beta-1。这就是问题似乎不知从何而来的原因。我想我已经有一段时间没有刷新依赖项了


解决方案:我回到了junit-4.11.jar,错误不再发生。

这是一个老问题,但万一有人碰巧在这里登陆,解决方案是使用junit 1.2.2


参考:

要获得有关Eclipse的帮助,请单击“安装详细信息”。选择“CumberEclipse特性”并单击“更新…”。如果您的插件是最新的,请不要担心


现在打开您的POM文件(Maven项目),并将工件“cucumber java”、“cucumber jvm”和“cucumber junit”至少设置为1.2.2版本(junit必须至少为4.11)

谢谢!更具体地说,JUnit1.2.0与JUnit4.12不兼容。我想我们需要等待这两个工件的更新。您使用的cucumber java和cucumber junit的版本是什么?