由于奇怪的错误,无法使用 Cucumber 启动 Junit 测试
Can't Launch Junit Test with Cucumber due to strange error
当我尝试使用 Cucumber 启动我的单元测试时,抛出一个错误让我感到非常失望。
我收到此错误:
java.lang.NoClassDefFoundError: javax/enterprise/context/spi/Contextual
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Class.java:2671)
at java.lang.Class.getConstructor0(Class.java:3075)
at java.lang.Class.getConstructor(Class.java:1825)
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:84)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:70)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:43)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:444)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
Caused by: java.lang.ClassNotFoundException: javax.enterprise.context.spi.Contextual
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 17 more
我已经尝试将这个库添加到我的 class 路径中,但是这个错误仍然会抛出另一个缺少的库,以及另一个等等...
我已经搜索过了,Cucumber 不需要所有这些库。这是我的测试class。
@RunWith(Runner.class)
@CucumberOptions(monochrome = true, features = { "src/test-integration/resources/scenarii" }, glue = {
"info.scandi.fusion.cucumber" }, plugin = { "pretty" })
public class AllTests {
}
路径似乎是正确的。如您所见,我的步骤定义被定义到我在项目中导入的 jar 中。
我的错误似乎与此有关Whosebug question。但是我没有使用任何根黄瓜包。
任何帮助将不胜感激。
这不是 Cucumber 错误。您缺少运行时所需的依赖项。
我解决此问题的方法是尽可能多地删除 Cucumber 配置,直到错误消失。
我只会保留@RunWith(Cucumber.class)
然后看看会发生什么。
查看您的 JUnit class,我注意到您正在使用名为 Runner.class
的运行程序
我不知道这是什么跑步者,但我知道它不是 JUnit Cucumber 跑步者。
开始使用 Cucumber 的一个很好的起点是 https://github.com/cucumber/cucumber-java-skeleton
问题来自 slf4j 库。我不知道为什么。我删除它是因为它不再使用了。所以现在一切都按预期工作。认为。
当我尝试使用 Cucumber 启动我的单元测试时,抛出一个错误让我感到非常失望。
我收到此错误:
java.lang.NoClassDefFoundError: javax/enterprise/context/spi/Contextual
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Class.java:2671)
at java.lang.Class.getConstructor0(Class.java:3075)
at java.lang.Class.getConstructor(Class.java:1825)
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:84)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:70)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:43)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:444)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
Caused by: java.lang.ClassNotFoundException: javax.enterprise.context.spi.Contextual
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 17 more
我已经尝试将这个库添加到我的 class 路径中,但是这个错误仍然会抛出另一个缺少的库,以及另一个等等...
我已经搜索过了,Cucumber 不需要所有这些库。这是我的测试class。
@RunWith(Runner.class)
@CucumberOptions(monochrome = true, features = { "src/test-integration/resources/scenarii" }, glue = {
"info.scandi.fusion.cucumber" }, plugin = { "pretty" })
public class AllTests {
}
路径似乎是正确的。如您所见,我的步骤定义被定义到我在项目中导入的 jar 中。
我的错误似乎与此有关Whosebug question。但是我没有使用任何根黄瓜包。
任何帮助将不胜感激。
这不是 Cucumber 错误。您缺少运行时所需的依赖项。
我解决此问题的方法是尽可能多地删除 Cucumber 配置,直到错误消失。
我只会保留@RunWith(Cucumber.class)
然后看看会发生什么。
查看您的 JUnit class,我注意到您正在使用名为 Runner.class
的运行程序
我不知道这是什么跑步者,但我知道它不是 JUnit Cucumber 跑步者。
开始使用 Cucumber 的一个很好的起点是 https://github.com/cucumber/cucumber-java-skeleton
问题来自 slf4j 库。我不知道为什么。我删除它是因为它不再使用了。所以现在一切都按预期工作。认为。