【问题标题】:How to execute test runner with multiple tags in Cucumber如何在 Cucumber 中执行具有多个标签的测试运行程序
【发布时间】:2022-07-27 18:18:21
【问题描述】:

我要一个一个地执行两个指定的测试用例 我有如下配置的测试运行器

@CucumberOptions(
    features = {"src/test/resources/features"},
    glue = "classpath:",
    plugin = { "html:src/test/resources/execution/report/cucumber-reports.html" },
    tags = "@Test213 and @Test214"
)
public class TestRunner extends AbstractTestRunner {
}

但是当我运行它时,没有执行任何场景 - 只有来自 testNG 的 @Before。

控制台输出:

14:32:09.036 [main] INFO  integration.RestFXTestBaseClass - New browser instance opened
14:32:09.039 [main] INFO  cleaner.RestFXCleaner - Cleaning execution directory...
14:32:09.044 [main] INFO  cleaner.RestFXCleaner - Items deleted

===============================================
Default Suite
Total tests run: 0, Passes: 0, Failures: 0, Skips: 0
===============================================

【问题讨论】:

  • 在未来,如果您包含您正在运行的版本(即 Cucumber 版本、TestNG 版本,甚至 Java 版本)也不会受到影响。有时答案可能会因您正在运行的软件版本而异.
  • 黄瓜 6.9.1、TestNG 7.0 和 Java 11

标签: java cucumber testng


【解决方案1】:

这是由于我对这个标签处理的错误理解。 我认为我需要加入 and 执行的场景,但这是合乎逻辑的 and 所以这个tags = "@Test213 and @Test214"只执行由这两个标签注释的场景,我的套件中没有。 如果我想一个一个地运行场景,我需要像这样配置它tags = "@Test213 or @Test214"

【讨论】:

    【解决方案2】:

    问题很可能是glue = "classpath:"引起的

    在 Cucumber 中,“glue”是您的步骤定义的位置(文件夹)。我确定您的步骤定义文件夹未命名为classpath:。如果您的步骤定义所在的文件夹名为 tests 并且它位于您的项目中,您可以使用相对路径,例如 glue = "tests"。大多数人选择将他们的步骤定义文件夹命名为stepDefinitions

    另外,请确保您的 标签 正确,否则您可能会看到类似的问题。

    更新:根据 M.P. 提供的信息。 Korstanje,glue 可以是类路径 URI。但是,您的 URI 为空。问题是一样的:你没有让 Cucumber 知道在哪里可以找到你的步骤定义。您需要提供包(即 com.myapp.mypackage)、路径(即 com/myapp/mypackage)或 URI(即 classpath :http://com/myapp/mypackage)。

    【讨论】:

    • Cucumber 支持包名、类路径 uris 和 windows 路径。我不建议使用后两者,但它仍然有效。 github.com/cucumber/cucumber-jvm/blob/main/core/src/main/java/…
    • @M.P.Korstanje 不知道。谢谢!对于 OP,类路径是空的。问题还是一样的,对吧?问题在于glue 标记的值。 (或缺乏)
    • 没有。看另一个答案。但是试着说服自己。
    • @M.P.Korstanje 我认为您错过了我所说的部分“另外,请确保您的标签正确,否则您可能会看到类似的问题。”我知道黄瓜的“和”和“或”问题。我已经看到很多了。您可以查看编辑历史记录。评论从一开始就在那里......以防万一你需要说服自己。 :D
    • 胶水路径,无论正确与否,都不会影响场景的发现。因此,它与 OPs 问题无关。此外,OP 的粘合路径是正确的。所以告诉 OP 改变它对他们没有帮助。
    【解决方案3】:

    如果要运行使用这些标签中的任何一个注释的场景,则需要使用“或”。

    'And' 是运行带有两个标签注释的场景

    有时我们想要运行一些在上次运行中失败的回归场景。

    所以,那个时候我们可以使用 'and' -> @Regression 和 @Defect

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多