Cucumber 创建小黄瓜特征文件的多个实现

Cucumber 创建小黄瓜特征文件的多个实现,cucumber,gherkin,cucumber-java,Cucumber,Gherkin,Cucumber Java,假设我有一个功能文件,列出了许多场景(功能文件的实际内容是不相关的) 我希望重用相同的功能文件,并提供一些实现: 单元测试套件的实现。 此实现将模仿外部方面,如数据库/存储库 这个实现运行起来很快 验收集成测试套件实现。 这将在登台环境中运行,并且不会模拟任何东西(在适当的情况下,外部服务除外) 此实现的运行速度会很慢(因为它需要所有基础设施都处于启动和运行状态) 我试过: 将要素文件放置在mono repo中其自己的子项目中 使其他子项目依赖于要素文件 实施测试 尽管这样做有效

假设我有一个功能文件,列出了许多场景(功能文件的实际内容是不相关的)

我希望重用相同的功能文件,并提供一些实现:

  • 单元测试套件的实现。
    • 此实现将模仿外部方面,如数据库/存储库
    • 这个实现运行起来很快
  • 验收集成测试套件实现。
    • 这将在登台环境中运行,并且不会模拟任何东西(在适当的情况下,外部服务除外)
    • 此实现的运行速度会很慢(因为它需要所有基础设施都处于启动和运行状态)
我试过:

  • 将要素文件放置在mono repo中其自己的子项目中
  • 使其他子项目依赖于要素文件
  • 实施测试
尽管这样做有效,但我无法再从IntelliJ中的功能文件跳转到步骤定义(因为它们位于不同的模块中)(这降低了吸引力)


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

我们也做过类似的事情

您可以指定两个不同的运行程序,
runcumbertest
runcumbertit
,其中第一个运行程序将用于运行单元测试并应指向单元测试的步骤定义,第二个运行程序将用于运行集成测试并应指向集成测试的步骤定义。在
@CucumberOptions
中,您可以指定跑步者应该使用哪些步骤定义(
glue
);只需确保在单独的文件/目录中分离“单元测试”步骤定义和“集成测试”步骤定义

如果有任何步骤定义不依赖于单元测试和集成测试之间的区别,则这些步骤定义可以位于“共享”步骤定义文件/目录中,并由两个运行程序调用

以*Test结尾的文件应由Surefire在单元测试阶段提取。 以*结尾的文件应该在单元测试阶段通过故障保护来获取

希望这有帮助