2012-10-07 148 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

相关问题