如何通过 gradle 系统属性 JUnit 5 测试?
How to pass gradle systemProperties JUnit5 tests?
我正在使用 gradle 3.5
和 Unit 5 (jupiter)
。
我希望将系统 属性 传递给我的测试,以便配置测试
我是运行测试使用这个命令gradle test -Denv=envFile1
这是我的 gradle 文件:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'org.junit.platform:junit-platform-gradle-plugin:1.0.0-M4' //JUnit 5
}
}
repositories {
mavenCentral()
}
ext.versionJunitPlatform = '1.0.0-M4'
ext.versionJunitJupiter = '5.0.0-M4'
ext.versionLog4j = '1.2.17'
ext.versionRestAssured = '2.9.0'
ext.versionRestAssuredJsonValid = '3.0.2'
ext.versionHamcrest = '1.3'
ext.versionJacksonDatabind = '2.9.0.pr2'
ext.versionSeleniumJava = '3.3.1'
test {
systemProperties System.properties
systemProperty 'env1', System.properties['env']
systemProperty 'env2', 'i am a static env'
}
dependencies {
compile group: 'log4j' , name: 'log4j' , version: "$versionLog4j"
compile group: 'com.jayway.restassured' , name: 'rest-assured' , version: "$versionRestAssured"
compile group: 'io.rest-assured' , name: 'json-schema-validator' , version: "$versionRestAssuredJsonValid"
compile group: 'org.hamcrest' , name: 'hamcrest-all' , version: "$versionHamcrest"
compile group: 'com.fasterxml.jackson.core' , name: 'jackson-databind' , version: "$versionJacksonDatabind"
compile group: 'org.seleniumhq.selenium' , name: 'selenium-java' , version: "$versionSeleniumJava"
testCompile group: 'org.junit.jupiter' , name: 'junit-jupiter-api' , version: "$versionJunitJupiter"
testRuntime group: 'org.junit.jupiter' , name: 'junit-jupiter-engine' , version: "$versionJunitJupiter"
}
这是我的测试:
package com.somecompany.someProject.tests;
import org.junit.jupiter.api.Test;
public class AaTest {
@Test
public void a() {
System.out.println("a env: " + System.getProperty("env"));
System.out.println("a env1: " + System.getProperty("env1"));
System.out.println("a env2: " + System.getProperty("env2"));
}
}
这是我得到的输出:
gradle test -Denv=envName
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:compileTestJava
:processTestResources UP-TO-DATE
:testClasses
:junitPlatformTest
a env: null
a env1: null
a env2: null
*我已经更新了问题
对于以前版本的 junit,它可以使用以下代码:
test {
systemProperties System.properties
}
或
test {
systemProperty 'env', System.properties['env']
}
当您在命令行中使用 -D
时,它被传递给 gradle 构建脚本而不是 JVM。
不过好像最新版本不支持,请看here:
The junitPlatform extension/task does not support systemProperty at
this time. This will change when the Gradle team adds support for
JUnit 5 to core Gradle.
这是 , which I answered here:
的副本
您可以像这样设置系统属性:
afterEvaluate {
def junitPlatformTestTask = tasks.getByName('junitPlatformTest')
junitPlatformTestTask.systemProperty 'org.slf4j.simpleLogger.defaultLogLevel', 'warn'
}
我正在使用 gradle 3.5
和 Unit 5 (jupiter)
。
我希望将系统 属性 传递给我的测试,以便配置测试
我是运行测试使用这个命令gradle test -Denv=envFile1
这是我的 gradle 文件:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'org.junit.platform:junit-platform-gradle-plugin:1.0.0-M4' //JUnit 5
}
}
repositories {
mavenCentral()
}
ext.versionJunitPlatform = '1.0.0-M4'
ext.versionJunitJupiter = '5.0.0-M4'
ext.versionLog4j = '1.2.17'
ext.versionRestAssured = '2.9.0'
ext.versionRestAssuredJsonValid = '3.0.2'
ext.versionHamcrest = '1.3'
ext.versionJacksonDatabind = '2.9.0.pr2'
ext.versionSeleniumJava = '3.3.1'
test {
systemProperties System.properties
systemProperty 'env1', System.properties['env']
systemProperty 'env2', 'i am a static env'
}
dependencies {
compile group: 'log4j' , name: 'log4j' , version: "$versionLog4j"
compile group: 'com.jayway.restassured' , name: 'rest-assured' , version: "$versionRestAssured"
compile group: 'io.rest-assured' , name: 'json-schema-validator' , version: "$versionRestAssuredJsonValid"
compile group: 'org.hamcrest' , name: 'hamcrest-all' , version: "$versionHamcrest"
compile group: 'com.fasterxml.jackson.core' , name: 'jackson-databind' , version: "$versionJacksonDatabind"
compile group: 'org.seleniumhq.selenium' , name: 'selenium-java' , version: "$versionSeleniumJava"
testCompile group: 'org.junit.jupiter' , name: 'junit-jupiter-api' , version: "$versionJunitJupiter"
testRuntime group: 'org.junit.jupiter' , name: 'junit-jupiter-engine' , version: "$versionJunitJupiter"
}
这是我的测试:
package com.somecompany.someProject.tests;
import org.junit.jupiter.api.Test;
public class AaTest {
@Test
public void a() {
System.out.println("a env: " + System.getProperty("env"));
System.out.println("a env1: " + System.getProperty("env1"));
System.out.println("a env2: " + System.getProperty("env2"));
}
}
这是我得到的输出:
gradle test -Denv=envName
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:compileTestJava
:processTestResources UP-TO-DATE
:testClasses
:junitPlatformTest
a env: null
a env1: null
a env2: null
*我已经更新了问题
对于以前版本的 junit,它可以使用以下代码:
test {
systemProperties System.properties
}
或
test {
systemProperty 'env', System.properties['env']
}
当您在命令行中使用 -D
时,它被传递给 gradle 构建脚本而不是 JVM。
不过好像最新版本不支持,请看here:
The junitPlatform extension/task does not support systemProperty at this time. This will change when the Gradle team adds support for JUnit 5 to core Gradle.
这是
您可以像这样设置系统属性:
afterEvaluate {
def junitPlatformTestTask = tasks.getByName('junitPlatformTest')
junitPlatformTestTask.systemProperty 'org.slf4j.simpleLogger.defaultLogLevel', 'warn'
}