Selenium 定义gradle任务,以运行具有特定系统属性的任务

Selenium 定义gradle任务,以运行具有特定系统属性的任务,selenium,gradle,Selenium,Gradle,我正在努力创建一个gradle任务,以使用指定的system.properties(用于Selenium测试)执行测试任务 task firefox() << { System.setProperty('driver', 'firefox') tasks.clean.execute() tasks.test.execute() } 决不能从构建脚本调用task firefox()task.execute()(如果这样做,可能会发生不好的事情)。由Gradle

我正在努力创建一个gradle任务,以使用指定的system.properties(用于Selenium测试)执行测试任务

task firefox() << {
    System.setProperty('driver', 'firefox')
    tasks.clean.execute()
    tasks.test.execute()
}
决不能从构建脚本调用
task firefox()
task.execute()
(如果这样做,可能会发生不好的事情)。由Gradle调用此方法。为
测试任务设置系统属性的方法是:

test {
    systemProperty "driver", "firefox"
}

System.setProperty()
不会有任何效果,因为测试总是在单独的JVM中执行。

嘿,彼得,谢谢你的快速回复!这部分回答了我的问题。从命令行的角度来看,我想称之为“gradle firefox”或“gradle phantomjs”。如果调用execute函数的风格不好,我如何设置一个调用测试任务的任务,包括在另一个任务中设置的属性?似乎唯一可能的解决方案是通过命令行-Pvar=firefox传递一个变量,并设置属性:systemProperty“driver”,varn没有简单的方法可以做到这一点。相反,您可以添加两个测试任务,或者您可以传入一些系统(或项目)属性并基于此配置测试任务。如果这还不够好,更复杂的替代方法是使用嵌入式构建(
GradleBuild
task)或操作
gradle.startParameter.taskNames
。好的,谢谢你的建议。我做了两个测试任务,效果很好;)