创建一个gherkin特性文件的多个实现。

问题描述 投票:0回答:1

假设我有一个特征文件,列出了许多场景(特征文件的实际内容无关紧要)。

我想重用同一个特性文件,并提供一些实现。

  • 单元测试套件的实现。
    • 这个实现将模拟掉外部方面,如DBrepositories。
    • 这个实现将快速运行。
  • 验收集成测试套件实现。
    • 这将在一个暂存环境中运行,并且不会模拟任何东西(除了适当的外部服务)。
    • 这个实现的运行速度会很慢(因为它要求所有的基础设施都要启动和运行)。

我已经尝试过。

  • 把功能文件放在自己的子项目中,放在一个单一的repo中。
  • 让其他子项目依赖于特性文件。
  • 实现测试。

虽然这样做有效,但我不能再在IntelliJ中从特性文件跳转到步骤定义(因为它们在不同的模块中)(这降低了吸引力)。

有没有人有过类似的经验?或者你会建议不要这样做吗?

cucumber gherkin cucumber-java
1个回答
1
投票

我们也做过类似的事情。

你可以做的是指定2个不同的运行器。RunCucumberTestRunCucumberIT其中,第一个用于运行单元测试,应该指向单元测试的步骤定义,第二个用于运行集成测试,应该指向集成测试的步骤定义。在 @CucumberOptions 您可以指定哪些步骤定义 (glue);只要确保将 "单元测试 "步骤定义和 "集成测试 "步骤定义分别放在不同的文件目录中即可。

如果有任何步骤定义 不要 取决于单元测试和集成测试之间的区别,这些文件可以放在一个 "共享 "的步骤定义文件目录中,并由两个运行者调用。

以*Test结尾的文件应该在单元测试阶段被Surefire.Files结尾的文件应该在单元测试阶段被Failsafe.Files结尾的文件应该在单元测试阶段被Failsafe.Files结尾的文件应该在单元测试阶段被Failsafe.

希望能帮到你。

© www.soinside.com 2019 - 2024. All rights reserved.