2016-10-03 2 views
0

Eclipse를 사용하여 매우 간단한 오이 테스트 환경을 설정하려고합니다. 내가 자습서를 다음과 필요한 참조 라이브러리와 프로젝트를 생성하고있다 : 나는 다음과 같은 내용으로 CucumberRunner.java 파일을 만든오이 테스트 패키지의 java.lang.NoClassDefFoundError

Referenced Libraries

을 :

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 { 

} 

또한 기능 파일을 만들고 단계 정의. from, 기능 파일을 실행하면 테스트가 올바르게 실행됩니다. 나는 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) 

내가 왜 이런 일이에 관해서는 총 손실입니다. 누락 된 라이브러리를 포함하도록 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