黄瓜运行场景取决于不同功能文件中的另一个

时间:2016-04-04 12:05:57

标签: java cucumber

问题是可以按自定义顺序运行方案:

想象一下,我们有2个功能文件(第1个 - 下订单,第2个是在后端创建订单数据) 在第一个文件中,我有使用凭证代码或不使用凭证代码的场景,因此基本上必须使用凭证代码触发的那些场景应该在后端触发(触发创建凭证场景)。 我希望看到与TestNG相同的行为 - dependsOnMethods。 是否有可能为黄瓜做?

非常感谢。

2 个答案:

答案 0 :(得分:0)

您可以通过采用方案步骤函数并将它们全部放入新的步骤定义中来为它所依赖的方案创建步骤定义。

我个人使用PHP dist(Behat),所以我可以举一个PHP的例子,也许这会让你更容易看到我的意思:

 /**
 *
 * @Given /^I have completed some previous scenario$/
 */
public function iHaveCompletedSomePreviousScenario()
{
    $this->iEnterInTextboxWith();
    $this->wait(300);
    $this->iClickOn("button:contains('Continue')");
    $this->wait(500);
}

如果在Java中存在某种方式(据我所知,这是宁静使用的方式),它可以做到这样的事情:

@Given /^I have completed some previous scenario$/
public void i_have_completed_some_previous_scenario() throws Throwable
{
    // Enter in here functions used in scenario you are emulating
}

再次,我很抱歉我对黄瓜的Java和Serenity dist知之甚少,不知道使用预定义函数的确切语法,但是,我希望你知道怎么做,所以这对你有帮助。

答案 1 :(得分:0)

我会尽可能地避免耦合功能。

您的第一个功能是创建数据并验证创建过程是否正确。

您的第二个功能是处理您期望在系统中可用的数据。

我的方法是获得支持代码,以便在需要时为每个方案创建数据。此支持代码会在执行任务之前将系统设置为预期状态。

这可能会导致重复。就个人而言,我会接受重复,赞成可读性。在这种情况下,这也会带来灵活性。您要求的耦合执行将迫使您每次都执行所有操作。在故障排除时,您无法轻松执行单个场景。

BDD和Cucumber都是关于人类可读的沟通。

Clarity胜过DRY。