java - JBehave - 运行单个场景

标签 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

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

embedder.useMetaFilters(Arrays.asList("+wip"));

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

1 stories excluded by filter: +wip

但是,如果我用 @wip 注释 story,那么两个场景都会运行,因为它们都继承了 wip 元属性。

有没有一种巧妙的方法可以实现这一点?

最佳答案

问题很简单,您的 Meta: 声明属于 Scenario: header 。

所以:

Scenario: A scenario that is work in progress
Meta: @wip
Given foo
When bar
Then baz

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

关于java - JBehave - 运行单个场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33145638/

相关文章:

java - Safari 无法下载此文件 (Passbook Pass)

java - 在java中解码加密的字符串

java - (JAVA) System.in 上的终止函数 .. 可能吗?

java - JBehave 是否像 Jasmine 一样工作?

java - 如何在 Eclipse 和 Ant 中使用不同的 Junit TestRunner?

jbehave/storyDurations.props 的 java.io.FileNotFoundException

java - 我想知道网络中机器的IP地址。为什么我得到 127.0.0.1?

java - 是否可以在android中以编程方式关闭静音模式?

gradle - 无法使用Serenity Framework使用Gradle执行Jbehave

java - 将 jbehave 报告输出到代码位置以外的其他位置