我们有一个CICD流程,其中定义的TC集合始终为门控流程执行。有时它不需要运行所有测试,而是我们只想根据开发人员所做的更改来触发一组TC。我们的测试是基于黄瓜的用户故事,因此我们可以通过标签控制测试运行。我的想法是从teamcity的maven命令行参数字段中参数化cucumber.options,让Dev / support人员根据需要定义标记。
如果我提到命令行参数为
-Dcucumber.options="--tags %env.test.scope%"
我的mavenized项目的值为cucumber.options = "--tags @Sanity
(假设env.test.scope值为@Sanity)。如果你在这里仔细注意,我为什么要打开双引号?它破坏了我的TestRunner并且没有触发任何测试。如果我删除双引号,然后我得到mvn错误,因为@Sanity不被识别为有效目标(因为--tags和@之间的空间问题)如何定义我的参数(cucumber.options)值与空间?
答案 0 :(得分:5)
这似乎与JVM(运行Maven)和-D比TeamCity更相关。传递参数的正确方法是 " -Dcucumber.options = - 标签%env.test.scope%"因为它应该作为JVM的单个参数获得,然后被解析为" cucumber.options"参数用" - 标签%env.test.scope%"值。