2014-06-08 13 views
1

我使用Android-Release Archetype創建了一個非常基本的Android-Maven項目。我改變的一件事是將Android項目設置爲Android庫。這意味着我沒有AndroidManifest定義的活動。 Maven構建仍然工作的HelloAndroidActivityHelloAndroidActivityTest,但即使複製這兩個類將新的測試失敗:無法爲Android測試解析庫活動

無法爲解決活動:意向{行動= android.intent.action.MAIN FLG = 0x10000000的CMP = org.acme.project.android/.HelloAndroidActivity2}

我找遍了整個工作區,無法找到任何HelloAndroidActivity參考,以解釋爲什麼它的工作原理與活動,但不是這一個。所以我想我有兩個問題:爲什麼集成測試使用任何清單文件中未引用的活動?爲什麼它不適用於此活動的相同副本?

我不認爲它很重要得多,但這些都是我AndroidManifests

庫項目:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="org.acme.project.android" 
     android:versionCode="1" 
     android:versionName="1.0-SNAPSHOT" > 

     <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="16" /> 

    </manifest> 

整合測試項目:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="org.acme.project.android.test" 
     android:versionCode="1" 
     android:versionName="1.0-SNAPSHOT" > 

     <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="16" /> 

     <application 
      android:icon="@drawable/icon" 
      android:label="@string/app_name" > 
      <uses-library android:name="android.test.runner" /> 
     </application> 

     <instrumentation 
      android:name="android.test.InstrumentationTestRunner" 
      android:targetPackage="org.acme.project.android" /> 
    </manifest> 

無改變我今天得到的東西:

[2014年6月9日8時39分47秒 - org.acme.project.android.it]試運行失敗:儀表運行失敗,原因是 '拋出java.lang.ClassNotFoundException'

根本沒有額外的信息,甚至沒有錯過哪個班級。

回答

0

我得到它的工作。我以爲只剩下最後一步應該是必要的,但對我來說也沒有,直到後,我進入了整個工作的考驗:

  1. 我的集成測試項目的包設置爲org.acme.project.android(即去除.test) - 這使Eclipse本身能夠執行測試
  2. 我又添加了.test,因爲Maven的不喜歡到R上的文件在一個封裝(IllegalArgumentException: already added: Lorg/acme/project/android/R
  3. (在這一點上,所有的變化還原),我增加了活動到集成測試清單

正如我所說的,前兩個步驟應該是愚蠢的,但我已經添加並刪除了活動一百次到各地的各種清單文件,它從來沒有工作。因此,可能需要徹底清理和更換包裝後才能看到變化。

相關問題