【问题标题】:How do I skip specific/individual scenarios in same story using meta filtering?如何使用元过滤跳过同一故事中的特定/个别场景?
【发布时间】:2015-07-29 20:20:39
【问题描述】:

在使用 JBehave/Thucydides 进行 bdd/测试时,我想跳过某些我知道暂时有效的场景。最终,我想重新运行整个测试套件。但是,随着我的开发,重新运行旧测试以获取我编写的新测试需要太多时间。

这是我所说的一个例子:

loggingIn.story

Scenario: logging in as customer
...

Scenario: logging in as admin
...

我知道第一个场景可行,当我使用 JUnit 运行故事时,我如何跳过它而不是重新浏览它?

来自 JBehave 网站的链接 Meta Info, Meta Filtering

我认为我可以做以下事情:

loggingIn.story

Scenario: logging in as customer
Meta:
@ignored true
...

Scenario: logging in as admin
Meta:
@ignored false
...

然后在将测试作为 JUnit 测试用例运行时,我传递了一个 jvm 参数,如下所示: -Dmetafilter="+ignored".

但是,这会跳过这两种情况,而不仅仅是第一种。

【问题讨论】:

  • 您想永远跳过它们吗?还是直到某个时间点? JUnit 如何知道何时重新开始测试它们?
  • 我编辑了我的帖子以澄清。我想暂时跳过它们。当我删除我想的元过滤器时,JUnit 会知道重新开始测试它们。我对元过滤器不太了解,这就是我问的原因。

标签: java junit spring-tool-suite jbehave thucydides


【解决方案1】:

几天前我提出了同样的问题,因为我有一个类似的问题。但是,您的论点 Dmetafilter="+ignored" 意味着所有带有元标记 @ignored 的场景都将被执行。您不必在@ignored 之后使用truefalse。如果你想跳过带有元标记@ignored 的所有场景,你必须使用Dmetafilter="-ignored"

我正在使用类似 -Dmetafilter="+run -norun" 的东西。这意味着所有带有标签@run 的场景都将被执行,所有带有@norun 的场景都将被跳过(我知道,您通常只需要其中一个,但这让我在应该运行的场景中更清楚这不是)。

编辑:

所以一个例子是:

Szenario: Validation of something
Meta:
@norun
Given ...

【讨论】:

  • 嗯,我现在做了一些事情,使您的回答不完全正确。我的所有测试都用 @skip 注释,并且我将 jvm 作为 -Dmetafilter="+skip" 传递,所以我希望所有测试都被执行,但它跳过了所有测试。
  • 这很奇怪。你有任何空格字符或类似的东西吗?我经常在我的 maven 运行配置中使用这些元参数作为目标(例如 clean verify serenity:aggregate -Dmetafilter="+category:one" ,在这种情况下,所有带有标签 @category:one 的场景都将被执行,其他场景将被跳过,它对我来说很好用)。你也可以在这里阅读:jbehave.org/reference/stable/meta-filtering.htmlwhere [+|-] indicates if the filter should include or exclude the meta property and [...]
【解决方案2】:

我看过的大多数 Jbehave 示例都使用 Skip 元数据来执行您的建议。

Scenario: logging in as admin
Meta:
@skip
Given ...

你的过滤器看起来像-Dmetafilter="-skip"。您不需要有开/关值。如果它有一个跳过元值 then 它将被跳过。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多