2012-04-10 4 views
2

나는 안드로이드에 다소 익숙하며, 테스트 프로젝트에 Hamcrest matchers를 포함시키는 방법에 대해 몇 시간 동안 고심하고있다. 이 코드는 Eclipse에서 실행해야하는 것처럼 보이며 표시된 오류는 없습니다. 그러나 테스트를 실행하면 Hamcrest 클래스가로드되지 않습니다. 나는 "NoClassDefFoundError : org.hamcrest.Matchers"를 얻는다.안드로이드에서 jUnit과 함께 Hamcrest matchers를 사용하는 방법

나는 지난 3 시간 동안 누군가가 전에도 마주 쳤지 만 운이 없다고 생각하는 포럼을 보았습니다. 나는 IDE가 클래스를 볼 수있는 것처럼 바보 같은 짓을하고있을 것이다. 그러나 런타임은 그렇지 않다. 나는 도서관으로 외부 항아리로 hamcrest 모두-1.2.jar를 추가하려고했습니다

import static org.hamcrest.MatcherAssert.assertThat; 
import static org.hamcrest.Matchers.equalTo; 
import org.hamcrest.Matcher; 
import android.test.InstrumentationTestCase; 

public class AppDescLoaderTest extends InstrumentationTestCase { 

    public void testHamcrest() { 
    assertThat(3, equalTo(3)); 
    } 
} 

: 여기

테스트 소스입니다. 두 가지 동일한 결과, IDE에서 코드는 정상적으로 보이지만 런타임에 클래스를로드하지 못합니다.

나의 이론은 hamcrest.jar이 .apk 파일과 함께 가지 않으므로 클래스가로드되지 않는 것입니다. 그것이 사실이라면 .apk 파일과 함께 안드로이드에 푸시되도록하려면 어떻게해야합니까?

답변

5

그런 다음, 현재 R17 도구에있는 가정 ...

I've tried adding the hamcrest-all-1.2.jar as a Library and as an external jar. Same result both ways, code looks fine in IDE but fails to load classes at runtime.

1 단계 : 그 전부를 취소합니다.

2 단계 : 프로젝트 루트에 libs/ 디렉토리를 만듭니다.

3 단계 : JAR을 libs/에 넣으십시오.

그리고 끝났습니다. 이것은 명령 행 빌드를위한 레시피 였지만 이제는 Eclipse 기반 빌드의 방법이되었습니다.

+0

이렇게했습니다. 나는 또한 jar에 대한 참조를 외부 jar로 두거나 IDE가 클래스를 보지 못하게해야했습니다. 이제 "Dalvik 형식으로의 변환이 오류 1과 함께 실패했습니다" –

+0

@wannabetester : "외부 항아리로 jar에 대한 참조를 넣어야했거나 IDE에서 클래스를 볼 수 없었습니다." - 당신은 R17 버전의 개발 도구를 사용하지 않았다고 제안합니다. 외부 JAR로 참조를 제거하십시오. 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 Build Path> Configure Build Path를 선택하고 Libraries 탭을 클릭 한 다음 Add JARs ... 버튼을 클릭합니다 (* 외부 * JAR 추가 안함). 프로젝트의' libs /'디렉토리에 추가하고 추가하십시오. – CommonsWare

+0

좋아요, 빌드 경로에서 jar 파일을 제거했고 IDE가 이제는/libs 폴더에 있기 때문에 .jar를 인식합니다. 필자가 이전에해야 할 일은 IDE를 새로 고쳐서/libs 디렉토리를 다시 검사하는 것입니다. 그러나 나는 아직도 Dalvik 오류를 얻는다. 그 문제에 대한 다른 게시물이 있다고 생각합니다. 해결책을 알고 있다면 전달하십시오. 그 동안 나는 그것을 찾으려고 노력할 것이다. –

관련 문제