2012-09-24 3 views
0

ActivityInstrumentationTestCase2를 사용하여 FragmentActivity (android-support-v4.jar의)에서 파생 된 Activity를 테스트하려고합니다. android-support-v4.jar은 주 프로젝트 (테스트 된 프로젝트)의 libs 폴더에 있습니다. 테스트 프로젝트가 빌드를 통과하게하려면 기본 프로젝트의 링크를 "ln ../mainProject/libs/android-support-v4.jar ./libs/android-support-v4"명령을 사용하여 테스트 프로젝트에 추가하십시오. jar "테스트 프로젝트의 루트 디렉토리에 있습니다. http://dtmilano.blogspot.com/2009/12/android-testing-external-libraries.html?showComment=1348480869133에 의해 권장됩니다. 블로그의 가이드 라인에 따라 Eclipse로 테스트를 성공적으로 실행할 수 있습니다.ActivityInstrumentationTestCase2로 FragmentActivity를 테스트하기위한 안드로이드 유닛 테스트를 실행할 때의 java.lang.NoClassDefFoundError

public class QuestionListActivityTest extends ActivityInstrumentationTestCase2<QuestionListActivity>{ 
    private Solo solo; 
    private FragmentActivity activity; 

public QuestionListActivityTest() { 
    super(QuestionListActivity.class); **// the exception happened here** 
} 
... 
} 

: 여기

[exec] android.test.suitebuilder.TestSuiteBuilder$FailedToCreateTests: 
[exec] Error in testSuiteConstructionFailed: 
[exec] java.lang.RuntimeException: Exception during suite construction 
[exec]  at android.test.suitebuilder.TestSuiteBuilder$FailedToCreateTests.testSuiteConstructionFailed(TestSuiteBuilder.java:239) 
[exec]  at java.lang.reflect.Method.invokeNative(Native Method) 
[exec]  at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169) 
[exec]  at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154) 
[exec]  at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:520) 
[exec]  at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1447) 
[exec] Caused by: java.lang.reflect.InvocationTargetException 
[exec]  at com.test.QuestionListActivityTest.<init>(QuestionListActivityTest.java:17) 
[exec]  at java.lang.reflect.Constructor.constructNative(Native Method) 
[exec]  at java.lang.reflect.Constructor.newInstance(Constructor.java:446) 
[exec]  at android.test.suitebuilder.TestMethod.instantiateTest(TestMethod.java:87) 
[exec]  at android.test.suitebuilder.TestMethod.createTest(TestMethod.java:73) 
[exec]  at android.test.suitebuilder.TestSuiteBuilder.addTest(TestSuiteBuilder.java:263) 
[exec]  at android.test.suitebuilder.TestSuiteBuilder.build(TestSuiteBuilder.java:185) 
[exec]  at android.test.InstrumentationTestRunner.onCreate(InstrumentationTestRunner.java:373) 
[exec]  at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4218) 
[exec]  at android.app.ActivityThread.access$3000(ActivityThread.java:125) 
[exec]  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2071) 
[exec]  at android.os.Handler.dispatchMessage(Handler.java:99) 
[exec]  at android.os.Looper.loop(Looper.java:123) 
[exec]  at android.app.ActivityThread.main(ActivityThread.java:4627) 
[exec]  at java.lang.reflect.Method.invokeNative(Native Method) 
[exec]  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
[exec]  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
[exec]  at dalvik.system.NativeStart.main(Native Method) 
[exec] Caused by: java.lang.NoClassDefFoundError: com.activity.QuestionListActivity 
[exec]  ... 19 more 

는 테스트 코드의 스냅입니다 : 내가 명령을 사용하여 테스트 "개미 깨끗한 디버그 테스트를 설치"를 실행하려고하면 그러나, 나는 항상 아래의 예외를 만난 것 나는 안드로이드 SDK R15를 사용하고 있습니다. 테스트는 에뮬레이터와 함께 실행되었습니다. 아무도 그것을 해결하는 방법을 알고 있습니까? 허드슨과 통합하기 위해서는 개미로 실행해야합니다. 미리 감사드립니다.

+0

문제가 생겼다. 1. 테스트 코드에서 FragmentActivity 대신 Activity를 사용하십시오. 2. 테스트 프로젝트의 컴파일 단계 (ant 디버그) 중에 링크 (ln)를 추가 한 다음 테스트 실행 단계 (ant 설치 테스트) 전에 링크를 제거합니다. 그러면 테스트 케이스를 성공적으로 실행할 수 있습니다. –

+0

[android.test.ServiceTestCase의 [java.lang.NoClassDefFoundError] 가능한 중복 (http://stackoverflow.com/questions/5758966/java-lang-noclassdeffounderror-in-android-test-servicetestcase) – mthmulders

답변

1

관련 문제 here을 확인하셨습니까?

귀하의 것과 유사합니다.