2

我在我的代码中使用场景大纲,并希望在场景大纲开始之前执行一些代码,并在场景大纲执行完成之后执行一些代码。

我知道黄瓜中有 @Before 和 @After 注释,但是这些在每个场景之前和之后都会执行。因此,如果我有一个场景大纲和 3 行示例数据,那么 @Before 和 @After 将分别执行,即每次总共执行 3 次。

但我只想执行一次,@Before 场景大纲和@After 场景大纲就是这样!有没有办法在 cucumber-jvm 中实现这一点?

//@Before (some code that should be executed before scenario outline execution begins)

Scenario outline
....
Examples:
|Header1  | Header2 | ..etc
|Data1    | Data2   |

//@After (some code that should be executed after scenario outline execution ends)
4

1 回答 1

3

据我所知,没有直接的方法,但您可以标记您的场景并使用标记的前后挂钩作为解决方法。

这是一个例子:

Feature: ExampleTagging
    @DoBeforeScenarioX
    Scenario outline
    ....
    Examples:
    |Header1  | Header2 | ..etc
    |Data1    | Data2   |

然后你可以在你的 Java 代码中使用它:

@Before("@DoBeforeScenarioX")
public void do_this_before_scenarioX() {....}

@After("@DoBeforeScenarioX")
public void do_this_after_scenarioX() {....}

以下是描述的标签:https ://github.com/cucumber/cucumber/wiki/Tags

于 2015-04-14T09:04:45.287 回答