2016-10-03 44 views
0

我正在尝试使用Eclipse设置一个非常简单的Cucumber测试环境。我下面的教程,并创建了所需的参考库项目:Cucumber测试包中的java.lang.NoClassDefFoundError

Referenced Libraries

我已经创建了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) 

我已经安装了黄瓜Eclipse插件按照另一个回答问题,所以我在一个总损失,为什么发生这种情况。如果我尝试添加JAR来包含缺少的库,我似乎将问题转移到缺少缺失的库。

我认为它必须与我使用的库的版本有关,但我是一个完全新手,并且没有如何解决这个问题的经验。

任何帮助都将不胜感激。

+0

我有一个类似的问题,找不到其他类。我也有像你一样的包装黄瓜胶和跑步课。我尝试重命名黄瓜包,它的工作.. – Grasshopper

+0

分享你的maven/ant构建文件,Junit/TestNG/something_else测试框架,testng.xml,如果你有一个和一个类文件。如果您的教程是免费的,请分享该链接。 – Sid

+0

重命名黄瓜包工作。我觉得这既惊人又令人难以置信的烦人。感谢Grasshopper和Sid花时间回答。 –

回答

0

根据上面Sid的评论,重命名黄瓜类修复了这个问题。

1

在我的情况下,我不得不将glue =“cucumber.steps”添加到CucumberOptions列表中。

+0

好的第一个答案!当包含步骤定义的路径不在类路径中时,它必须使用glue选项添加。如果steps是类路径的一个文件夹(例如claspath = src/main/java,并且步骤在src/main/java/steps中),那么我添加glue = {“classpath:steps”} – MikeJRamsey56

相关问题