【问题标题】:How to skip cucumber tests with parsing error in maven?如何在 Maven 中跳过带有解析错误的黄瓜测试?
【发布时间】:2016-08-25 15:40:54
【问题描述】:

我使用mvn integration-test 运行我的黄瓜测试。如果我的测试目录包含以Error parsing feature file 结尾的测试,我的下一个测试根本不会运行。

我有 4 个 .feature 文件,其中一个包含无效步骤(未解析)。如果删除该步骤,我将成功运行 4 个文件 (Tests run: 23, Failures: 2, Errors: 0, Skipped: 3),

如果我不这样做,我会收到以下消息:Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.078 sec <<< FAILURE!。我希望 maven 在 1 个无效功能文件后继续测试,而不是在第一个文件上停止,所以我需要 Tests run: 24, Failures: 2, Errors: 1, Skipped: 3 之类的东西(我无法解析的步骤是最后一个)

我的 pom.xml 的片段:

                    <plugin>
                    <artifactId>maven-failsafe-plugin</artifactId>
                    <version>2.18.1</version>
                    <executions>
                        <execution>
                            <goals>
                                <goal>integration-test</goal>
                                <goal>verify</goal>
                            </goals>
                        </execution>
                    </executions>
                    <configuration>
                        <systemPropertyVariables>
                            <cucumber.options>${cucumber.options}</cucumber.options>
                        </systemPropertyVariables>
                    </configuration>
                </plugin>

问题:报错后如何让maven继续使用其他黄瓜功能?

【问题讨论】:

  • 你能分享你pom.xml文件的相关部分吗?
  • 在特征文件上加一个忽略标签。并在跑步者中使用否定过滤掉忽略标签。标签 = {“~@ignore”}。如果您有任何其他标签,请将此“不忽略”标签设为 AND 条件。
  • 感谢@Grasshopper 的评论,但我不想在上面贴任何标签,我需要 maven 只是将测试标记为错误并继续工作。

标签: maven cucumber integration-testing pom.xml maven-failsafe-plugin


【解决方案1】:

你不能只跳过解析错误,不知道测试执行的错误类型。

但是,根据您的经验,使用 maven-failsafe-pluginskipAfterFailureCount 选项(@ 987654328@ 有same 选项,以防您使用它)。

或者,使用更强大的方法,您可以将 Maven 构建设置为在测试期间忽略失败并继续测试整个套件,方法是使用 maven-failsafe-plugintestFailureIgnore 作为其 verify 目标或 @ maven-surefire-plugin 的 987654324@ 选项。

如果您不想在 pom.xml 中将它们配置为默认构建,则可以将此行为委托给 maven profile 或使用它们各自的命令行选项:

mvn clean verify -Dmaven.test.failure.ignore=true

或者(使用上面的第一个选项)

mvn clean verify -Dsurefire.skipAfterFailureCount=42

或者(取决于你使用的插件)

mvn clean verify -Dfailsafe.skipAfterFailureCount=12

请注意,我使用verify 而不是integration-test 作为一个阶段,因为集成测试应该设置和拆除要集成的上下文/环境,在这种情况下要正确执行集成测试,您应该:

  • 使用maven-failsafe-plugin 而不是maven-surefire-plugin
  • 使用pre-integration-test,integration-testandpost-integration-test` 正确设置、执行和清理您的集成测试阶段

【讨论】:

  • 谢谢。我使用了故障保护插件,不幸的是,这对我没有帮助。我编辑了问题,添加了更多细节。
  • @БогданТимофеев 您是否尝试在故障安全声明的configuration 中添加此答案中提到的选项,testFailureIgnoretrue,并检查这是否符合您的要求?跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-14
  • 2020-12-19
  • 2012-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-08
相关资源
最近更新 更多