返回

从 JAR 文件运行 Cucumber 回归测试的完整指南:如何解决常见问题?

java

用 JAR 文件运行 Cucumber 测试:一份详尽的指南

问题

想要从一个包含 Cucumber 回归测试的项目中构建一个 fat JAR 文件,并使用 java -jar.. 命令运行测试,却遇到了问题。

解决方案

要解决这个问题,请遵循以下步骤:

检查依赖项

确保 JAR 文件包含所有必需的依赖项,包括 Cucumber 和 Glue 代码。

验证主类

检查清单文件中 mainClass 条目是否配置为 io.cucumber.core.cli.Main

Class-Path 条目

添加 Class-Path 条目到清单文件,指定依赖项的位置,例如 Class-Path: ./lib/*

Glue 路径

使用 --glue 参数指定 Glue 代码的路径。

步骤定义

确保所有步骤定义类都包含在 JAR 文件中,并正确实现了。

依赖项冲突

检查是否存在依赖项冲突,这可能导致步骤定义未找到。

JVM 内存

增加 JVM 分配的内存,因为 Cucumber 测试可能会消耗大量内存。

优化后的 pom.xml

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <configuration>
        <archive>
            <manifest>
                <addClasspath>true</addClasspath>
                <mainClass>io.cucumber.core.cli.Main</mainClass>
            </manifest>
            <manifestEntries>
                <Class-Path>./lib/*</Class-Path>
            </manifestEntries>
        </archive>
        <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
    </configuration>
    <executions>
        <execution>
            <id>make-assembly</id>
            <phase>package</phase>
            <goals>
                <goal>single</goal>
            </goals>
        </execution>
    </executions>
</plugin>

运行命令

java -Xmx256m -Xms128m -cp target/regression-test-1.0.40-jar-with-dependencies.jar io.cucumber.core.cli.Main --glue classpath:/au/com/core/api/stepdefs/createtransactionreport classpath:/features

常见问题解答

  1. 如何检查依赖项冲突?

    • 使用 mvn dependency:tree 命令检查依赖项。
  2. 如何增加 JVM 内存?

    • 使用 -Xmx-Xms 选项指定最大和最小堆大小。
  3. 为什么我的步骤定义未找到?

    • 检查是否添加了正确的 --glue 参数或 JAR 文件中是否存在依赖项冲突。
  4. 如何优化 JAR 文件大小?

    • 使用依赖项管理工具(如 Maven)排除不需要的依赖项。
  5. 如何调试 Cucumber 测试?

    • 使用 -Dcucumber.options=--dry-run 选项运行测试,以查看执行的步骤。