如何使用元过滤跳过相同故事中的特定/个别场景?

时间:2015-07-29 20:20:39

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

在使用JBehave / Thucydides进行bdd /测试时,我想跳过某些我知道临时工作的情况。最终,我想重新运行整个测试套件。但是,正如我正在开发的那样,重新运行旧测试只是为了进行新的测试我写的花了太多时间。

以下是我所说的一个例子:

loggingIn.story

Scenario: logging in as customer
...

Scenario: logging in as admin
...

我知道第一个场景有效,当我使用JUnit运行故事时,如何跳过它而不是通过它?

来自JBehave网站的链接 Meta InfoMeta Filtering

我收集了我可以做的事情如下:

loggingIn.story

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

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

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

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

2 个答案:

答案 0 :(得分:1)

我前几天打开了同样的问题因为我有类似的问题。但是,您的参数Dmetafilter="+ignored"表示将执行包含元标记@ignored的所有方案。您不必在true之后使用false@ignored。如果您想跳过包含元标记@ignored的所有方案,则必须使用Dmetafilter="-ignored"

我使用类似-Dmetafilter="+run -norun"的类似内容。这意味着所有标记为@run的sceanrios都将被执行,并且所有带有@norun的场景都将被跳过(我知道,您通常只需要其中一个,但这会让我在场景中更加清晰哪个应该运行,哪个不运行。

修改

一个例子是:

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

答案 1 :(得分:1)

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

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

您的过滤器看起来像-Dmetafilter="-skip"。您不需要具有开/关值。如果它具有跳过元值,那么它将被跳过。