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

如何针对发布版本APK运行Android/Robotium Instrumentation测试用例?,android,automated-tests,release,robotium,Android,Automated Tests,Release,Robotium,我有一个Android项目设置,其纯Java单元测试项目在PC上运行,其功能/集成测试项目在Emulator上运行。这两种方法利用了InstrumentationTestCase2测试用例和Robotium框架。我能够在Eclipse中运行这两个,并对我的应用程序进行调试并收集结果等等 我能够通过Eclipse导出和Ant构建创建一个发布APK。APK经过签名、zipaligned和模糊处理 我想知道如何对我的应用程序的版本运行这些功能/集成测试,而不是调试版本。我知道我可能会遇到一些错误,因为

我有一个Android项目设置,其纯Java单元测试项目在PC上运行,其功能/集成测试项目在Emulator上运行。这两种方法利用了
InstrumentationTestCase2
测试用例和Robotium框架。我能够在Eclipse中运行这两个,并对我的应用程序进行调试并收集结果等等

我能够通过Eclipse导出和Ant构建创建一个发布APK。APK经过签名、zipaligned和模糊处理

我想知道如何对我的应用程序的版本运行这些功能/集成测试,而不是调试版本。我知道我可能会遇到一些错误,因为AppProject包含一些只测试的类,这些类可能已经被Proguard删除了,但我可以处理

我在谷歌上搜索,在这里搜索,但没有运气。只有一个页面与Robotium测试相关,而你只有应用程序的APK,没有来源。我不确定这是否真的对我有帮助。
如何让测试项目在设备上针对发布版APK运行?

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

  • 在测试中的发布应用程序和测试机器人应用程序上签名 您的释放密钥
  • 在您的设备上安装这两个应用程序
  • 使用以下命令运行测试:
  • adb shell am instrument-w com.your.package/android.test.InstrumentationTestRunner

    其中com.your.package是您的包名

    有关更多信息,请参阅Robotium问答:

    正如您所提到的,根据您编写测试用例的方式,您可能还存在一些Proguard问题

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

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

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

    我所做的是:

  • 通过添加以下内容,让测试apk针对发布生成类型运行:
  • 为您的测试apk添加proguard规则
  • 现在尝试对发布版本运行测试。由于proguard,您仍然可能会遇到错误。如果您像我一样使用Robotium,可以在proguard-rules.txt文件中添加以下行:

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

    希望有帮助。

    您好。谢谢你的回答。我认为这是创建发布APK(签名等等)所必需的。这一行动已经开始。我所追求的是对发布版本APK运行功能/集成测试。目前我不在该项目中工作,但知道答案仍然很有用。另外,@Frank已经悬赏了。你能详细说明一下如何进行吗?我的意思是:好吧,假设你用相同的(Release)键签署了Debug APK和Release APK。那你怎么走得更远呢?谢谢签名后,您必须安装测试中的发布应用程序和测试机器人应用程序,然后通过命令“adb shell am instrument-w com.android.foo/android.test.InstrumentationTestRunner”从命令行启动测试,其中com.android.foo是您的包名。更多信息请参见机器人问答:Ok。目前我无法测试这是否有效。如果@Frank能证实这一点,我非常乐意将你的答案标记为答案(我想Frank做不到)。是的@theelfishmike是正确的。我对他的回复进行了编辑以使其更清晰,并授予了赏金。注意,您最有可能需要指定
    com.your.package.test
    ,换句话说,是测试应用程序的包(而不是应用程序本身)。
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles 'proguard-rules.txt'
            testProguardFile('proguard-rules.txt')
        }
    }
    
    ##--------------- Begin: proguard configuration for Robotium  ----------
    -keep class com.robotium.** { *;}
    ##--------------- End: proguard configuration for Robotium  ----------