Java JBehave-运行单个场景

Java JBehave-运行单个场景,java,jbehave,Java,Jbehave,我的情况是: 我有一个包含多个场景的JBehave故事。每个场景都会写入一些文件,检查它们是否符合预期。然后,下一个场景的@beforecasenario会导致框架删除输出文件 当某个场景失败时,我只想孤立地运行该场景——这样我就可以在删除输出文件之前方便地检查它(以及速度)。其他人也问了同样的问题,他们被告知“使用元过滤”——这似乎是正确的工具 但我不想用@skip注释其他场景。我只想用@wip注释一个场景,然后只运行那个测试 我试过这个: Narrative: An example stor

我的情况是:

我有一个包含多个场景的JBehave故事。每个场景都会写入一些文件,检查它们是否符合预期。然后,下一个场景的
@beforecasenario
会导致框架删除输出文件

当某个场景失败时,我只想孤立地运行该场景——这样我就可以在删除输出文件之前方便地检查它(以及速度)。其他人也问了同样的问题,他们被告知“使用元过滤”——这似乎是正确的工具

但我不想用
@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.useMetaFilters(Arrays.asList("+wip"));
这会导致跳过整个故事,因为故事不匹配:

1 stories excluded by filter: +wip
但是,如果我用
@wip
注释故事,那么这两个场景都会运行,因为它们都继承了
wip
元属性


有没有一个简洁的方法来实现这一点?

问题很简单,您的
元:
声明属于
场景:
标题之下

因此:


现在
embedder.useMetaFilters(Arrays.asList(“+wip”)将实现您想要的。

我通过匹配场景标记和筛选值进行了工作。e、 g.“Meta:@scenario-wip”和embedder.useMetaFilters(Arrays.asList(“+scenario-wip”))。但是在您尝试自定义标记值之前,您应该切换场景和元标记的顺序,以遵循jBehave grammarThat,很可能就是它!是的。试过了,你的评论成了我的答案。
Scenario: A scenario that is work in progress
Meta: @wip
Given foo
When bar
Then baz