我有一些java的经验,我是gradle的新手,我加入了一个项目,我必须修改gradle文件。
这是我的build.gradle
文件
apply plugin: 'java'
apply plugin: 'idea'
sourceCompatibility = 1.5
version = '1.0'
dependencies {
testCompile 'org.testng:testng:6.9.10',
'org.seleniumhq.selenium:selenium-java:2.53.0'
}
test {
useTestNG()
testLogging.showStandardStreams = true
}
然后我使用mac终端中的以下命令运行我的测试套件
./build test
我想传递一个名为environment
的参数
根据此参数的值,我需要配置我的URL并为该环境运行测试。类似./build test environment=dev
或./build test environment=qa
在我的java代码中,我会做这样的事情
if(env == 'dev') {
url = "my dev url";
user = "my dev user name"
} else if(env == 'qa') {
url = "my qa url";
user = "my qa user name"
}
如何在终端中传递此参数? 我在代码中如何使用此参数的一小段内容会有很大的帮助(我的java代码没有主方法)。
注意:我已经使用了属性文件并实现了此行为,但我的团队不希望在代码中进行更改以设置环境。所以我不得不放弃这些改变。
答案 0 :(得分:14)
从命令行到gradle,您可以使用系统属性或项目属性。它将是:
./gradlew test -Denv=dev
或
./gradle test -Penv=dev
现在可以在build.gradle
中读取上面的属性,您还需要将它们传递给测试,必须使用系统属性来完成:
test {
systemProperty 'env', System.properties['env'] ?: 'dev'
}
从命令行获取系统属性或:
test {
systemProperty 'env', project.hasProperty('env') ? project.env : 'dev'
}
在测试类中只使用:
System.getProperty("env")
获得您需要的价值。