我有一个Android项目设置,其纯Java单元测试项目运行在PC上,其功能/集成测试项目运行在模拟器上。这两个都使用了InstrumentationTestCase2
测试用例和Robotium框架。我能够从Eclipse中运行这两个,对我的应用程序的调试版本并收集结果等等。
我能够通过Eclipse导出和Ant构建创建一个发布APK。APK被签名、压缩和混淆。
我想知道如何对我的应用程序的发布版本运行那些功能/集成测试,而不是调试一个。我知道我可能会遇到一些错误,因为应用程序项目包含一些仅用于测试的类,这些类可能已经被Proguard剥离,但我可以处理。
我搜索了谷歌和这里在SO,但没有运气。当你只有应用程序的APK时,这里只有一个页面与Robotium测试有关,没有源代码。我不确定这真的能帮到我。我如何让测试项目在设备上运行,以对抗发布APK?
- 同时签署正在测试的发布应用程序和测试Robotium应用程序你的释放键
- 在你的设备上安装这两个应用程序
- 使用以下命令运行测试:
adb shell am instrument -w com.your.package/android.test.InstrumentationTestRunner
其中com.your.package是你的包名。
参见Robotium Q&A了解更多信息:http://code.google.com/p/robotium/wiki/QuestionsAndAnswers
正如您所提到的,您可能还会有一些Proguard问题,这取决于您是如何编写测试用例的。
我在寻找解决方案的时候遇到了这个问题。我想知道如何运行这些功能/集成测试对我的应用程序的发布版本,而不是调试版本。
由于这是一个有老答案的老问题,我将给出一个基于gradle的Android项目的更新答案。
我所做的是:
- 让测试apk在发布版本类型上运行,添加以下内容:
android { testBuildType "release" }
- 为您的测试apk添加保护规则
buildTypes { release { minifyEnabled true proguardFiles 'proguard-rules.txt' testProguardFile('proguard-rules.txt') } }
现在尝试针对一个发布版本运行测试。你仍然可能遇到错误,由于保护。如果您像我一样使用Robotium,您可以在proguard-rules.txt文件中添加以下行:
##--------------- Begin: proguard configuration for Robotium ----------
-keep class com.robotium.** { *;}
##--------------- End: proguard configuration for Robotium ----------
希望能有所帮助。
你需要放ant。你的目标应用和测试应用的项目根目录下的属性。蚂蚁的内容。属性应该是这样的:key.alias=
key.store.password=
key.store=
key.alias.password=