如何将参数传递给Android';是否从另一个任务连接了AndroidTest Gradle任务?
(Android)Gradle任务如何将参数传递给Android';是否从另一个任务连接了AndroidTest Gradle任务?,android,gradle,android-gradle-plugin,build.gradle,Android,Gradle,Android Gradle Plugin,Build.gradle,(Android)Gradle任务connectedAndroidTest运行指定模块的所有检测测试,可以通过执行以下操作向其传递属性以限制其运行的测试: ./gradlew app:connectedAndroidTest -Pandroid.testInstrumentationRunnerArguments.class=com.app.package.test.TestSuite 我想编写两个不同的任务,reliabilityTest和sanityTest,它们将android.test
connectedAndroidTest
运行指定模块的所有检测测试,可以通过执行以下操作向其传递属性以限制其运行的测试:
./gradlew app:connectedAndroidTest -Pandroid.testInstrumentationRunnerArguments.class=com.app.package.test.TestSuite
我想编写两个不同的任务,reliabilityTest
和sanityTest
,它们将android.testinstrumentationrunnearguments.class
参数传递到connectedAndroidTest
,因此可以编写:
./gradlew app:sanityTest
将运行一部分测试
这就是我现在的任务:
task sanityTest() {
group 'verification'
description 'Runs sanity instrumentation tests.'
doFirst {
println "doFirst"
project.ext."android.testInstrumentationRunnerArguments.class" = "com.app.package.test.TestSuite"
}
finalizedBy 'connectedAndroidTest'
}
如果以以下方式运行测试,则仅运行TestSuite中的测试:
./gradlew app:sanityTest -Pandroid.testInstrumentationRunnerArguments.class=com.app.package.test.TestSuite
但是,如果以这种方式运行,则所有测试都将运行:
./gradlew app:sanityTest
-p
参数似乎设置了一个项目属性,我可以看到,当我用-p传递它时,设置的属性与我在任务的doFirst
块中设置它时设置的属性相同:
gradle.taskGraph.beforeTask { Task task ->
println "Executing task: " + task
if (task.name == "connectedDebugAndroidTest") {
println "beforeTask"
println "android.testInstrumentationRunnerArguments.class - " + project.properties.get("android.testInstrumentationRunnerArguments.class")
}
}
如何将参数传递给connectedAndroidTest
任务
-p和project.ext.
之间有什么区别
FWIW,我试着追踪connectedAndroidTest
是如何工作的,有一个很好的答案,我最接近的来源是。project.ext。优先级高于命令行中的-P,因此如果您有两个属性,但具有不同的值,则gradle将采用ext{}block中指定的一个属性