【问题标题】:Is there a way to run Karate test during maven's integration test phase?有没有办法在 maven 的集成测试阶段运行空手道测试?
【发布时间】:2018-01-30 12:23:20
【问题描述】:

有没有办法在 maven 的集成测试阶段运行空手道测试?似乎surefire插件被硬编码到空手道中。我曾尝试使用故障安全插件覆盖它,但没有运气。我不希望测试与单元测试一起运行。

提前致谢!

【问题讨论】:

    标签: karate


    【解决方案1】:

    似乎surefire插件被硬编码为空手道

    我不确定你从哪里得到这样的印象,但不,surefire 插件没有硬编码到空手道中。

    请记住,不通过surefire运行JUnit测试的最简单方法是不使用*Test.java命名约定。

    我认为适合您的解决方案很简单,无论哪个 JUnit 测试是您空手道测试的“入口点”(推荐使用 parallel runner) - 只需使用 failsafe naming conventions。

    然后,只需按照示例包含故障安全插件,它应该可以工作。如果您无法使其正常工作(不太可能),那么您应该查看maven profiles。

    编辑:另见此评论:Is there a way to run Karate tests as an integration test suite against a pre-booted spring boot server?

    原来我做不到,这是 Maven 的限制,而不是空手道。 Howto add another test source folder to Maven and compile it to a separate folder? - 这是我的测试项目来证明这一点:https://github.com/djangofan/spring-boot-hello - 感谢您引导我找到发现限制的正确路径。使用 Gradle 可能会解决我的问题,但这不是我项目的一个选项。如果我将空手道用于“分离的集成测试”,我需要一个单独的 mvn 测试模块。

    【讨论】:

    • 嗨,彼得,谢谢您的回复。关于“硬编码”的surefire插件,在控制台输出中是另一个版本,而不是我在我的pom文件中提取的版本,但现在它似乎是正确的。关于真正的问题,我使用 Maven 配置文件解决了这个问题。再次感谢。
    • @AdnanSarahlic 太棒了!由于您是 Stack Overflow 的新手,我可以提醒您考虑将此答案标记为已接受。
    • 我放弃了尝试使用具有故障保护功能的空手道。所以现在我只是在一个单独的模块中进行测试。我必须想办法启动/停止测试服务,它是一个单独的模块。可能会使用两阶段 Docker 构建文件。
    • surefire 是硬编码的印象来自于这样一个事实,即使测试是通过 maven-failsafe-plugin 启动的,空手道报告仍然在 /target/surefire-reports 文件夹中而不是在故障安全报告文件夹中。
    • @Mahatma_Fatal_Error 因为似乎不可能以正确的方式使用空手道进行故障保护,所以很可能会保持这种状态:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-09
    • 1970-01-01
    • 2020-03-23
    • 1970-01-01
    相关资源
    最近更新 更多