为androidTest定义buildConfigField

时间:2015-11-25 05:25:08

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

我在BuildConfig中定义了一个特定字段,用于在运行时获取URL。因此,对于每种构建类型,我使用不同的字符串:

    prod {
        buildConfigField "String", "BASE_URL", "\"abc.com\""
    }

    debug {
        buildConfigField "String", "BASE_URL", "\"efg.com\""
    }

运行Android测试时是否可以定义不同的URL?我尝试将此设置置于sourceSets->androidTest下,但不接受。

2 个答案:

答案 0 :(得分:2)

您必须将其作为参数传递给connectedAndroidTest任务。

android {
    ...
    buildTypes {
        prod {
            buildConfigField "String", "BASE_URL", "\"${getBaseUrl("abc.com")}\""
        }
        debug {
            buildConfigField "String", "BASE_URL", "\"${getBaseUrl("efg.com")}\""
        }
    }
}

def getBaseUrl(String fallback) {
    return project.hasProperty("base_url") ? project.getProperties().get("base_url") : fallback
}

然后通过-P传递参数:

./gradlew connectedDebugAndroidTest -Pbase_url="xxx.com"
./gradlew connectedProdAndroidTest  -Pbase_url="yyy.com"

答案 1 :(得分:0)

在test / androidTest目录中向BuildConfig.java添加自定义your.app.package

Android Studio标记为红色但有效。