나는 안드로이드에 다소 익숙하며, 테스트 프로젝트에 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 파일과 함께 안드로이드에 푸시되도록하려면 어떻게해야합니까?
이렇게했습니다. 나는 또한 jar에 대한 참조를 외부 jar로 두거나 IDE가 클래스를 보지 못하게해야했습니다. 이제 "Dalvik 형식으로의 변환이 오류 1과 함께 실패했습니다" –
@wannabetester : "외부 항아리로 jar에 대한 참조를 넣어야했거나 IDE에서 클래스를 볼 수 없었습니다." - 당신은 R17 버전의 개발 도구를 사용하지 않았다고 제안합니다. 외부 JAR로 참조를 제거하십시오. 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 Build Path> Configure Build Path를 선택하고 Libraries 탭을 클릭 한 다음 Add JARs ... 버튼을 클릭합니다 (* 외부 * JAR 추가 안함). 프로젝트의' libs /'디렉토리에 추가하고 추가하십시오. – CommonsWare
좋아요, 빌드 경로에서 jar 파일을 제거했고 IDE가 이제는/libs 폴더에 있기 때문에 .jar를 인식합니다. 필자가 이전에해야 할 일은 IDE를 새로 고쳐서/libs 디렉토리를 다시 검사하는 것입니다. 그러나 나는 아직도 Dalvik 오류를 얻는다. 그 문제에 대한 다른 게시물이 있다고 생각합니다. 해결책을 알고 있다면 전달하십시오. 그 동안 나는 그것을 찾으려고 노력할 것이다. –