【问题标题】:Externalize Configuration for Android Integration / Functional Tests用于 Android 集成/功能测试的外部化配置
【发布时间】:2014-02-01 07:11:07
【问题描述】:

我将移至Gradle plugin for Android 并重构一些集成测试。其中一些测试的代码如下:

@Override
protected void setUp() throws Exception {
    super.setUp();
    _client = new Client("https://test02.server.com", "password");
}

我想将 URL 和密码外部化,以便可以从 Jenkins 构建中驱动它们。我不完全确定该怎么做。测试都将使用 Gradle Android 插件运行。

【问题讨论】:

    标签: android jenkins gradle integration-testing android-gradle-plugin


    【解决方案1】:

    好吧,我不能代表 Jenkins 部分。

    忽略 Jenkins,这里有几个 Gradle for Android 方法:

    1. 将这些值放入资源中,例如字符串资源,并在不同构建类型中为不同类型的测试提供这些资源的替换版本。您可以在this sample project 中看到这一点,其中我有用于调试和发布的不同版本的字符串资源,以及自定义夹层构建类型。

    2. 将这些值放在BuildConfig 中,并为您的不同测试类型提供不同构建类型的替换版本。您可以在this sample project 中看到,它扩展了前一个,其中添加到BuildConfig 是通过buildConfigField 指令在build.gradle 文件中完成的。在此示例中,buildConfigField 中的值是硬编码的,它们可能由环境变量、属性文件等驱动。

    【讨论】:

    • 我认为第二种解决方案非常适合,因为 Jenkins 将提供构建变量 Gregg 可以在 gradle build 中引用它
    • 我选择了 #2。工作得很好。谢谢。
    • @Gregg:仅供参考,使用 0.8.0 版本的 Gradle for Android 插件,您可以替换 BuildConfig 的现有值。在我链接到的示例中,我现在创建mezzanine 构建类型(从release 克隆),然后为mezzanine 构建类型定义SERVER_URL,然后为release 构建定义SERVER_URL类型。现在更简单了:相同值的BuildConfig(例如SERVER_URL)替换了早期版本。我对回购(和书)的下一次更新将显示在release 上定义SERVER_URL,克隆mezzanine,并在mezzanine 中覆盖原始SERVER_URL
    • 什么书?有链接吗?
    猜你喜欢
    • 2015-01-01
    • 2011-04-09
    • 1970-01-01
    • 2013-08-06
    • 2019-02-25
    • 1970-01-01
    • 1970-01-01
    • 2021-04-06
    • 1970-01-01
    相关资源
    最近更新 更多