java.lang.NoClassDefFoundError 在 Cucumber 测试包中
java.lang.NoClassDefFoundError in Cucumber test package
我正在尝试使用 Eclipse 设置一个非常简单的 Cucumber 测试环境。我正在按照教程并使用所需的参考库创建项目:
我创建了包含以下内容的 CucumberRunner.java 文件:
package cucumber;
import org.junit.runner.RunWith;
import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;
@RunWith(Cucumber.class)
@CucumberOptions(
plugin = { "pretty", "json:target/cucumber.json" },
features = "src/cucumber"
)
public class CucumberRunner {
}
并创建特征文件和步骤定义。如果我 运行 来自,功能文件,测试 运行 正确。但是,如果我从 CucumberRunner.java 运行,我得到:
java.lang.NoClassDefFoundError: org/xmlpull/v1/XmlPullParserException
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
at java.lang.Class.privateGetPublicMethods(Class.java:2902)
at java.lang.Class.getMethods(Class.java:1615)
at cucumber.runtime.java.MethodScanner.scan(MethodScanner.java:40)
at cucumber.runtime.java.JavaBackend.loadGlue(JavaBackend.java:86)
at cucumber.runtime.Runtime.<init>(Runtime.java:92)
at cucumber.runtime.Runtime.<init>(Runtime.java:70)
at cucumber.runtime.Runtime.<init>(Runtime.java:66)
at cucumber.api.junit.Cucumber.createRuntime(Cucumber.java:80)
at cucumber.api.junit.Cucumber.<init>(Cucumber.java:59)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
我已经按照另一个已回答的问题安装了 Cucumber Eclipse 插件,所以我完全不知道为什么会这样。如果我尝试添加 JAR 以包含缺少的库,我似乎只是将问题转移到另一个缺少的库中。
我认为这一定与我使用的库版本有关,但我在这方面完全是新手,没有解决问题的经验。
如有任何帮助,我们将不胜感激。
根据上面 Sid 的评论,重命名黄瓜 class 解决了这个问题。
在我的例子中,我必须将 glue="cucumber.steps" 添加到 CucumberOptions 列表中。
我正在尝试使用 Eclipse 设置一个非常简单的 Cucumber 测试环境。我正在按照教程并使用所需的参考库创建项目:
我创建了包含以下内容的 CucumberRunner.java 文件:
package cucumber;
import org.junit.runner.RunWith;
import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;
@RunWith(Cucumber.class)
@CucumberOptions(
plugin = { "pretty", "json:target/cucumber.json" },
features = "src/cucumber"
)
public class CucumberRunner {
}
并创建特征文件和步骤定义。如果我 运行 来自,功能文件,测试 运行 正确。但是,如果我从 CucumberRunner.java 运行,我得到:
java.lang.NoClassDefFoundError: org/xmlpull/v1/XmlPullParserException
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
at java.lang.Class.privateGetPublicMethods(Class.java:2902)
at java.lang.Class.getMethods(Class.java:1615)
at cucumber.runtime.java.MethodScanner.scan(MethodScanner.java:40)
at cucumber.runtime.java.JavaBackend.loadGlue(JavaBackend.java:86)
at cucumber.runtime.Runtime.<init>(Runtime.java:92)
at cucumber.runtime.Runtime.<init>(Runtime.java:70)
at cucumber.runtime.Runtime.<init>(Runtime.java:66)
at cucumber.api.junit.Cucumber.createRuntime(Cucumber.java:80)
at cucumber.api.junit.Cucumber.<init>(Cucumber.java:59)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
我已经按照另一个已回答的问题安装了 Cucumber Eclipse 插件,所以我完全不知道为什么会这样。如果我尝试添加 JAR 以包含缺少的库,我似乎只是将问题转移到另一个缺少的库中。
我认为这一定与我使用的库版本有关,但我在这方面完全是新手,没有解决问题的经验。
如有任何帮助,我们将不胜感激。
根据上面 Sid 的评论,重命名黄瓜 class 解决了这个问题。
在我的例子中,我必须将 glue="cucumber.steps" 添加到 CucumberOptions 列表中。