java - GRADLE:TestNg - 无法将 -D 参数传递给 Java 代码

标签 java gradle testng command-line-arguments

我有一个使用 TestNg 用 Ja​​va 编写并使用 gradle 构建的测试框架。我想在命令行传递一个“环境”参数,它将在环境类中用于为特定环境定义域和服务器值。使用 Gradle 文档和关于此问题的几个论坛讨论,我仍然无法将参数作为系统属性传递给框架。我试图通过“测试”任务和“调试”任务来完成此任务,但无济于事。任务中的“println”语句显示 gradle 正在获取 -Denv 参数,但我尝试将其添加到测试框架的系统属性失败。

执行结果为空引用,environmentName 被设置为空。

有人可以找出我的错误吗?

命令行

.\gradlew debug -Denv=production

构建.gradle

test {
    def environment = System.properties["env"]
    println environment
    systemProperties = System.getProperties()
    systemProperties['env'] = environment
    useTestNG()
}

task debug(type: Test) {
//    def environment = System.properties["env"]
//    println environment
//    systemProperties = System.getProperties()
//    systemProperties['env'] = environment
    def groupsToInclude = []
    def groupsToExclude = []

    groupsToInclude.add('under_development')
    useTestNG() {
        groupsToInclude.each { String group -> includeGroups group }
        groupsToExclude.each { String group -> excludeGroups group }
    }
}

Java 类

import com.sun.javafx.runtime.SystemProperties;

public class Environment {

    private static EnvironmentDefinition environment;

    private Environment() {
    }

    public static EnvironmentDefinition getInstance() {
        if (environment == null) {
            String environmentName = SystemProperties.getProperty("env");
            // environmentName = environmentName == null ? "production" : environmentName;
            switch (environmentName) {
                default:
                    Environment.environment = ProductionEnvironment.getInstance();
            }
        }
        return environment;
    }
}

最佳答案

一切正常,请查看 demo我准备了。请注意你cannot将系统属性设置为空值 - 这也可能是一个问题。

关于java - GRADLE:TestNg - 无法将 -D 参数传递给 Java 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32815090/

相关文章:

java - 无法在 H2 DB 中调用触发器

java - JAVA连接后如何检查数据库是否存在

java - 从字符串解析时间范围

java - 用于 Java 的 SNMP 库

android - 从Ubuntu Terminal Gradle Build生成APK文件

java - 使用 TestNG DataProvider 跳过某些测试迭代

java - TestNG 测试继承和组

java - 通过命令行使用 TestNG xml 运行已编译的 Java Selenium 测试(带有依赖项)

java - Gradle运行测试错误

grails - 如何使用Gradle在Grails脚本上删除目录中的文件