将一个模块的黄瓜步骤定义导入另一个 maven 模块

Posted

技术标签:

【中文标题】将一个模块的黄瓜步骤定义导入另一个 maven 模块【英文标题】:Import cucumber step definitions of one module into another maven module 【发布时间】:2022-01-19 12:24:39 【问题描述】:

我有以下带有 Junit 和 Cucumber 的 Maven 项目结构:

| root project
    | Module 1
         | src
             | main
             | test
                 | java
                     | tests // where all step definitions from Module 1 are stored
             | resources
                 | features // feature files from Module 1
    | Module 2
         | src
             | main
             | test
                 | java
                     | tests // where all step definitions from Module 2 are stored
             | resources
                 | features // feature files from Module 2

我想在模块 2 中重复使用模块 1 中的步骤。是否可以将模块 1 中的步骤定义导入到模块 2 中以在那里重复使用它们?

【问题讨论】:

是的,这是可能的。取决于您是否已经自己进行了一些试验? 是的,我尝试将 Module1 添加为 Module2 的依赖项,并在黄瓜运行器类中设置“胶水”,但它仍然抛出“UndefinedStepException”异常。另外,我在其他地方发现,将步骤定义导出到单独的 jar 文件中可能会有所帮助,但不确定这是否是正确的方法。 【参考方案1】:

您已经在做的是一种正确的方法。您需要考虑以下几点:

    由于您的 Step Defs 位于 test 中,因此不会传递地参与 module2 类路径 还要确保 module1 中的 step defs 与您的module2 具有正确的包关系:module2 中的 runner 类与位于同一包中的功能文件位于同一包或更高版本中,或者高于您的步骤定义类 确保 module2 具有 module1 作为依赖项

因此,要修复示例中的第 1 点,您需要将 module1 中的步骤定义从 test 移动到 main

【讨论】:

也可以使用test-jar 来构建一个包含测试类的jar maven.apache.org/plugins/maven-jar-plugin/test-jar-mojo.html

以上是关于将一个模块的黄瓜步骤定义导入另一个 maven 模块的主要内容,如果未能解决你的问题,请参考以下文章

在黄瓜 jvm 中,如何正确地将步骤拆分为多个文件?

量角器配置文件没有拿起黄瓜步骤定义

如何使用来自另一个 Maven 模块的宏?

Sonarqube:为多模块导入 Jacoco xml 报告

无法为场景步骤创建黄瓜表达式

IntelliJ - 黄瓜步骤定义案例