2

在使用 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"

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

4

2 回答 2

2

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

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

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

于 2015-09-18T18:49:01.320 回答
2

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

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

编辑:

所以一个例子是:

Szenario: Validation of something
Meta:
@norun
Given ...
于 2015-07-30T09:32:06.563 回答