2012-10-07 169 views
0

如何在發佈模式下測試應用程序?我試過ant release test,但它給了這個錯誤在發佈模式下測試應用程序

test: 
[echo] Running tests ... 
[exec] INSTRUMENTATION_STATUS: id=ActivityManagerService 
[exec] INSTRUMENTATION_STATUS: Error=Unable to find instrumentation info for: ComponentInfo{com.kizbit.speedyreader.tests/android.test.InstrumentationTestRunner} 
[exec] INSTRUMENTATION_STATUS_CODE: -1 
[exec] android.util.AndroidException: INSTRUMENTATION_FAILED: com.kizbit.speedyreader.tests/android.test.InstrumentationTestRunner 

我已經複製了密鑰庫測試項目。

我想在發佈模式下測試,因爲它節省了很多狀態。如果我以調試模式重新安裝,那麼我必須卸載並重新安裝它,並刪除所有狀態。

+1

你不能把它保持在調試模式嗎?是否有任何理由在自己的設備上需要發佈模式? – Doomsknight

+0

@Doomsknight我想我確定我看到的和用戶一樣......只是偏執狂。沒有真正的原因。我剛剛儲存了很多數據,並不想失去它。 – Chloe

回答

1

好吧,我找到了一種方法。請務必在AndroidManifest.xml中檢查測試包的包名和測試類的路徑。出於某種原因,清單中的軟件包名稱是com .... tests,而類不在/ tests目錄中。我不知道它是如何工作的,但它用於正常調試。

要讓它在發佈模式下測試,您必須使用ant release install test。我忘了安裝。另外,test將始終構建應用程序的調試版本,因此您必須手動轉到實際應用程序項目目錄,然後運行ant release install,它將安裝發行版本。然後,轉到測試項目目錄並運行ant release install test。這會給出錯誤

Failure [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES] 

當它試圖安裝實際的應用程序時,因爲它已經安裝了釋放鍵。你可以忽略這個。此外,您必須使用adb uninstall com........tests刪除測試項目的調試版本,以確保在嘗試安裝測試版本時不會出現此錯誤。

此外,您必須將release.keystore文件從實際項目目錄複製到測試項目目錄中,並且如果您的密鑰保存在ant.properties中,則必須將這些條目複製到測試ant.properties中

key.store=release.keystore 
key.alias=mykey 
key.store.password=password 
key.alias.password=password 

然後它會測試版本!

請記住,因爲它不安裝實際的應用程序,所以如果您要更改內容,則必須重新編譯並從app目錄手動重新安裝發行版。也許有一種方法可以通過修改build.xml自動構建&安裝發行版本,但是我還沒有檢查過。

+1

夠公平:)。 +1找到一種方法來做到這一點。 – Doomsknight

+0

結束時只是在手機上保留調試版本並刪除/重新創建了我想要保存的數據。這樣添加和修改單元測試就容易多了。 – Chloe

+0

我嘗試了這種方法,但是它會失敗,如果你使用了proguard並且在你的測試項目中使用了被proguard優化過的方法 – mtotschnig

相關問題