2012-09-24 67 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的測試。 然而,當我嘗試運行使用命令測試「螞蟻乾淨的調試安裝測試」,我總是會遇到以下異常:java.lang.NoClassDefFoundError當運行android單元測試測試FragmentActivity與ActivityInstrumentationTestCase2

[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 

下面是測試代碼卡:

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

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

我正在使用android sdk R15。該測試是使用仿真器運行的。 有誰知道如何解決它?我真的需要用螞蟻來運行它,以便與哈德森結合。 在此先感謝!

+0

我發現了一個問題:1.在測試代碼中使用Activity而不是FragmentActivity。 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

它與你的相似。

相關問題