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를 사용하고 있습니다. 테스트는 에뮬레이터와 함께 실행되었습니다. 아무도 그것을 해결하는 방법을 알고 있습니까? 허드슨과 통합하기 위해서는 개미로 실행해야합니다. 미리 감사드립니다.
문제가 생겼다. 1. 테스트 코드에서 FragmentActivity 대신 Activity를 사용하십시오. 2. 테스트 프로젝트의 컴파일 단계 (ant 디버그) 중에 링크 (ln)를 추가 한 다음 테스트 실행 단계 (ant 설치 테스트) 전에 링크를 제거합니다. 그러면 테스트 케이스를 성공적으로 실행할 수 있습니다. –
[android.test.ServiceTestCase의 [java.lang.NoClassDefFoundError] 가능한 중복 (http://stackoverflow.com/questions/5758966/java-lang-noclassdeffounderror-in-android-test-servicetestcase) – mthmulders