现在我有一个config.properties
文件和一个singleton配置对象,它将文件读取到映射中,然后将所有系统变量也放在那里。因此,当我通过Jenkins运行测试时,具有相同名称的作业参数将覆盖config.properties
文件中设置的值。
这对我来说是意料之中的正确行为。但我想把所有的配置和构建参数都保存在GebConfig.groovy
文件中。
这里有两个问题:
-
现在,如果我需要在代码中获取GebConfig属性,我会使用
browser.getConfig().getRawConfig().get("contextPath")
。这是正确的调用还是有更好的方法从测试代码中的配置中获取参数? -
如何实现将Jenkins作业的参数传递到Geb配置?我只想到先在
System.getenv()
中搜索:public String getProperty(String name) { Map<String, String> systemEnv = System.getenv(); return systemEnv.get(name) ?: browser.config.rawConfig.get(name); }
所有构建工具都接受-DvarName=varValue将属性传递到GebConfig中。Gradle、Maven和Ant。因此,您可以在Jenkins Build步骤中传递该变量
编辑:下面是我的GebConfig,它处理默认值与传入变量
System.setProperty("geb.env.username", System.getProperty("geb.env.username", 'test'))