JBehave - 运行单个场景

sli*_*lim 5 java jbehave

我的情况是这样的:

我有一个包含多个场景的 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
Run Code Online (Sandbox Code Playgroud)

...然后我用这样的Embedder配置运行:

embedder.useMetaFilters(Arrays.asList("+wip"));
Run Code Online (Sandbox Code Playgroud)

这会导致整个故事被跳过,因为故事不匹配:

1 stories excluded by filter: +wip
Run Code Online (Sandbox Code Playgroud)

但是,如果我注释故事@wip,那么这两种方案都运行,因为这两个继承wip元属性。

有没有一种巧妙的方法来实现这一目标?

sli*_*lim 6

这个问题很简单,就是你的Meta:声明属于下面Scenario:标题。

所以:

Scenario: A scenario that is work in progress
Meta: @wip
Given foo
When bar
Then baz
Run Code Online (Sandbox Code Playgroud)

现在embedder.useMetaFilters(Arrays.asList("+wip"));将实现你想要的。