在使用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"
。
然而,这会跳过两种情况,而不仅仅是第一种情况。
答案 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"
。您不需要具有开/关值。如果它具有跳过元值,那么它将被跳过。