【问题标题】:What's the purpose of karate-junit5 when you can run tests without it?当您可以在没有它的情况下运行测试时,karate-junit5 的目的是什么?
【发布时间】:2022-01-25 21:11:35
【问题描述】:

空手道文档有 2 个使用空手道和 JUnit5 进行测试的示例:

我在第二个示例中仅使用 karate-core (0.9.9-RC2) 创建了一个项目,不需要 karate-junit5。有什么区别?

我对空手道提供的东西印象深刻,我有兴趣创建一个测试工具,它可能需要根据运行时标准挑选测试,还需要自定义报告,所以我正在寻找最简单的方法连接到测试运行器。 karate-junit5 中的代码似乎是一个很好的起点,但我只是想了解为什么对于正常运行的测试实际上不需要它。

【问题讨论】:

    标签: karate


    【解决方案1】:

    很好的问题,我可以回答这个问题。没错,直接使用Runner 类就足够了,这是并行运行测试的唯一方法。

    但是,如果您使用 JUnit 运行程序,您将获得作为 Java 开发人员所习惯的“绿条”体验,并且我们会确保填充 IDE UI(例如,测试运行和失败的树视图等)。如果我没记错的话,在 IntelliJ 中,您甚至可以在单击“测试用例”节点之一时看到日志。

    编辑:请注意,我的意思是在这里您可以在 IDE 中看到每个 Scenario 的数据,而不是包含 JUnit 测试的 Java 类。下面是 IntelliJ 的屏幕截图。所以这可以方便快速查看失败的原因和相应的错误消息,而无需深入了解日志/HTML 报告:

    但在我看来,一旦您习惯查看空手道输出的 HTML 报告,您就不需要 JUnit 集成了。

    总结一下:JUnit 支持是

    a) 因为我们从 Cucumber 扩展开始(甚至有一个 @KarateOptions 注释正在被弃用)

    b) 因为有些人喜欢 IDE 集成 + 体验,在开发模式下运行“一次一个测试”很有用

    您的评论让我更加确信我们最终会弃用 JUnit 支持。一旦您有机会玩更多游戏,就可以得到您的反馈。

    【讨论】:

    • 感谢您的快速响应。几年后我将回到 Java,所以没有事先的期望。看来我获得了 IDE 集成以及在没有 junit5 包的情况下运行单个测试的能力,这很有价值 - 不使用 karate-junit5 有什么遗漏吗?
    • 另外,要动态控制正在运行的功能,我可以使用 JUnit5 的动态测试吗?这就是我查看 karate-junit5 代码的原因,但也许我可以在您提供的 TestRunner 示例中做一些事情,并查看 ReportUtils 示例的输出。听起来对吗?谢谢。
    • @PeteEdwards 来动态控制功能,您可以将自定义文件列表传递给Runner,这是一个示例:github.com/intuit/karate/blob/develop/karate-demo/src/test/java/… - 我编辑了您关于 IDE 支持问题的答案
    • @PeteEdwards 谢谢我意识到我错过了关键部分 - 空手道 JUnit 支持在 IDE 中显示有关每个 Scenario 的数据。这有助于快速查看失败的原因和相应的错误消息,而无需深入了解日志/HTML 报告
    • 这真的很有帮助 - 我现在看到集成将每个场景转换为单独的测试以显示该数据,因此两全其美的将是支持此集成的并行运行器。现在我想我可以保留两种风格的跑步者——一种用于开发,另一种用于完整的测试工具。您的意见确实帮助我理解了这些差异。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-09
    • 2014-07-29
    • 1970-01-01
    • 2010-12-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多