如何针对发行版APK运行Android / Robotium Instrumentation测试用例?

时间:2011-12-16 17:46:04

标签: android automated-tests release robotium

我有一个Android项目设置,其纯Java 单元测试项目在PC上运行,其功能/集成测试项目在模拟器上运行。这两个使用InstrumentationTestCase2测试用例和Robotium框架。我可以从Eclipse运行这两个版本,对应我的应用程序的 debug 版本并收集结果等等。

我可以通过Eclipse导出和Ant构建创建发布APK。 APK已签名,zipaligned和混淆。

我想知道如何针对我的应用的发布版本而不是调试版本运行这些功能/集成测试。我知道我可能会遇到一些错误,因为app项目包含一些可能已被Proguard剥离的仅测试类,但我可以处理它。

我在谷歌上搜索了这里,但没有运气。当你只有应用程序的APK,没有来源时,只有一页here与使用Robotium进行测试有关。我不确定这对我有什么帮助。 如何让测试项目在设备上运行以防止发布APK?

3 个答案:

答案 0 :(得分:2)

  1. 同时签署测试版本和测试Robotium应用程序 你的发布密钥
  2. 在您的设备上安装这两个应用
  3. 使用以下命令运行测试:
  4. 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问题。

答案 1 :(得分:2)

  

我想知道如何运行这些功能/集成测试   我的应用程序的发布版本,而不是调试版本。

我在寻找解决方案时遇到了这个问题..

由于这是一个陈旧问题的老问题,我将为基于Gradle的Android项目提供更新的答案。

我做的是:

  1. 让测试apk针对发布版本类型运行,方法是添加:
  2. android {
        testBuildType "release"
    }
    
    1. 为您的测试apk添加proguard规则
    2. buildTypes {
          release {
              minifyEnabled true
              proguardFiles 'proguard-rules.txt'
              testProguardFile('proguard-rules.txt')
          }
      }
      

      现在尝试针对发布版本运行测试。你可能仍会因为proguard而遇到错误。如果你像我一样使用Robotium,你可以在proguard-rules.txt文件中添加以下行:

      ##--------------- Begin: proguard configuration for Robotium  ----------
      -keep class com.robotium.** { *;}
      ##--------------- End: proguard configuration for Robotium  ----------
      

      希望它有所帮助。

答案 2 :(得分:1)

您需要将ant.properties放在目标应用程序和测试应用程序的项目根目录中。 ant.properties的内容应该是这样的: key.alias= key.store.password= key.store= key.alias.password=