如何在Java代码

时间:2016-06-29 16:25:02

标签: java gradle testng

我有一些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代码没有主方法)。

注意:我已经使用了属性文件并实现了此行为,但我的团队不希望在代码中进行更改以设置环境。所以我不得不放弃这些改变。

1 个答案:

答案 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")

获得您需要的价值。