【问题标题】:Multi-level testing using Cucumber使用 Cucumber 进行多级测试
【发布时间】:2019-10-07 16:03:36
【问题描述】:

我的软件有一些 BDD 测试,在 Gherkin 中声明并使用 Cucumber JVM 运行。 Cucumber JVM 测试可以在我的应用程序的多个级别(层)中的任何运行:通过前端(使用 Testcontainers 的 HTML),通过后端( JSON over HTTP 通过 REST API 使用 Testcontainers),通过后端(使用 Java 方法调用的 Spring Boot 测试)使用模拟 HTTP 服务器的测试工具,或(对于某些测试)通过服务层(Java 方法调用) .

但我当然想在某种程度上测试我的应用程序的所有这些层。这意味着我想要一些重复我的 BDD 测试。我不想在所有级别上运行所有 BDD 测试。而且我不想只通过前端进行测试,这样更容易调试测试失败。在某些层面上,我只想做一些关键测试来证明应用程序的各个层正确地粘合在一起。

如果我天真地实现了一些重复的 Cucumber JVM 测试,Cucumber 会抱怨重复的步骤定义。如何进行重复测试,而不会让 Cucumber 被重复的步骤定义所迷惑?

这是与reusing step definitions 截然不同的问题:在不同的级别,一个步骤的代码是非常不同的。它与testing variants of and application 不同,不同的构建环境使用不同的步骤定义。

【问题讨论】:

    标签: java automated-tests cucumber-jvm


    【解决方案1】:

    为此,您必须在多个级别上实现步骤定义。因此,对于一个应该在一个测试中对 UI 进行操作,但在另一个测试中对 API 进行操作的步骤;您需要 2 个步骤定义。

    如果将这些步骤定义分组到不同的文件中,则可以创建指向不同“胶水”类的不同运行器(步骤定义文件”。

    您可以将可以在不同级别之间共享的步骤定义分组到一个文件中,供所有运行器使用。

    也就是说,我想知道您是否需要在应用程序的多个级别上测试相同的东西(即使只是一个子集)?想想每个测试的价值是什么,以及这将如何改变您尝试验证的内容。 例如: 如果一个方法在不同的输入上给出不同的输出,这可以在一个统一测试中进行测试。 要测试该结果是否正确显示,可能是 UI 或 API 级别的测试。 如果 UI 中有关于如何显示的附加逻辑,那可能是 UI 级别的测试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-28
      • 2015-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-09
      相关资源
      最近更新 更多