如何将参数从另一个任务传递给Android的connectedAndroidTest Gradle任务?

问题描述

(Android)Gradle任务const data = [ { 0: { country: null } },{ 1: { name: null } },{ 2: { address: null } },]; const result = data.every((item) => (Object.values(item).every((subItem) => (Object.values(subItem).every(nodeItem => nodeItem == null))) ) ); console.log(result);运行指定模块的所有检测测试,并且可以通过向其传递属性来限制其运行的测试:

connectedAndroidTest

我想写几个不同的任务,./gradlew app:connectedAndroidTest -Pandroid.testInstrumentationRunnerArguments.class=com.app.package.test.TestSuite reliabilityTest,将sanityTest参数传递给android.testInstrumentationRunnerArguments.class,所以可以写:

connectedAndroidTest

然后将运行一部分测试。

这是我现在要做的任务:

./gradlew app:sanityTest

如果我以以下方式运行测试,则仅运行TestSuite中的测试:

task sanityTest() {
  group 'verification'
  description 'Runs sanity instrumentation tests.'
  doFirst {
    println "doFirst"
    project.ext."android.testInstrumentationRunnerArguments.class" = "com.app.package.test.TestSuite"
  }
  finalizedBy 'connectedAndroidTest'
}

但是,如果我以此方式运行,则所有测试都将运行:

./gradlew app:sanityTest -Pandroid.testInstrumentationRunnerArguments.class=com.app.package.test.TestSuite

./gradlew app:sanityTest 参数似乎是在设置项目属性,并且可以看到,在使用-P传递该属性时,与在任务的-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<property有什么区别?

FWIW,我尝试跟踪project.ext.<property>的工作方式,并给出了一个很好的答案here,而我最接近来源的是here

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...