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