【发布时间】:2015-10-20 20:10:36
【问题描述】:
我的情况是这样的:
我有一个包含多个场景的 JBehave 故事。每个场景都会写入一些文件,检查它们是否符合预期。然后下一个场景的@BeforeScenario 会导致框架删除输出文件。
当某些场景失败时,我想单独运行那个场景——这样我就可以在输出文件被删除之前方便地检查它(也为了速度)。其他人也问过同样的问题,并被告知“使用元过滤” - http://jbehave.org/reference/stable/meta-filtering.html - 这似乎是正确的工具。
但我不想用@skip 注释所有其他场景。我只想用@wip 注释一个场景,然后只运行那个测试。
我试过这个:
Narrative:
An example story
Scenario: A scenario I don't want to run this time
Given foo
When bar
Then baz
Meta: @wip
Scenario: A scenario that is work in progress
Given foo
When bar
Then baz
... 然后我使用 Embedder 配置如下:
embedder.useMetaFilters(Arrays.asList("+wip"));
这会导致整个故事被跳过,因为故事不匹配:
1 stories excluded by filter: +wip
但是,如果我用@wip 注释故事,那么这两个场景都会运行,因为它们都继承了wip 元属性。
有没有一种巧妙的方法来实现这一点?
【问题讨论】:
-
我有 scenario filtering 通过匹配场景标签和过滤值来工作。例如“元:@scenario wip”和 embedder.useMetaFilters(Arrays.asList("+scenario wip"))。但在尝试自定义标记值之前,您应该切换 Scenario 和 Meta 标记的顺序以遵循 jBehave 语法
-
很可能就是这样!
-
是的。试了一下,你的评论成了我的答案。