如何为Cucumber-JVM中的所有步骤设置注释方法

时间:2015-03-16 06:29:57

标签: selenium cucumber-jvm

我使用Cucumber-JVM,我试图在每一步之后截取屏幕截图(如果出现故障)。问题是我不知道如何设置将在每个步骤之前和之后执行的方法。

我使用https://github.com/cucumber/cucumber-java-skeleton作为参考。我添加了跑步者https://github.com/cucumber/cucumber-java-skeleton/blob/master/src/test/java/skeleton/RunCukesTest.java BeforeClass和AfterClass(JUnit adnotations)和方法,它们为我提供了webrdiver的启动和停止(在每个场景之前和之后)。我知道我可以使用Before / After注释(Cucumber注释),但带有这些注释的方法必须放在包含步骤定义的同一个类中。问题是我有很多带有步骤的类,所以我不想把这些带注释的方法放在每个步骤类中,我需要定义一次。

请告诉我该怎么做。

[编辑]

这是我的跑步者

package example;



import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;

import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.runner.RunWith;



@RunWith(Cucumber.class)
    @CucumberOptions(
        features = "src/test/resources/"
    )
public class TodoTest {


    @BeforeClass
    public static void beforeClass() {

        System.setProperty("browser", "chrome");


        System.setProperty("remote", "http://localhost:4444/wd/hub");

    }

    @AfterClass
    public static void afterClass() {

    }

}

我需要定义将在整个项目的每个步骤之前和之后执行的方法,类似于方案的那些方法。

1 个答案:

答案 0 :(得分:1)

注释之前的方法不必位于同一个类中。 编辑:创建示例项目如下: 将你的StepDef类保存在名为cukes的包中,如src / test / java / cuckes

import cucumber.api.java.en.Given;

public class StepDef
{
    @Given("^order$")
    public void order()
    {
        System.out.println("Test hook");
    }
}

将您的Hook类保持在与上面相同的包中

import cucumber.api.Scenario;
import cucumber.api.java.After;
import cucumber.api.java.Before;

public class Hook {

    @Before
    public void before(Scenario scenario)
    {
        System.out.println("running scenario: "+scenario.getName());
    }

    @After
    public void after(Scenario scenario)
    {
        scenario.write("Test string to output in reports.");
        System.out.println("Finished running scenario: "+scenario.getName());
    }
}

将您的跑步者(在本例中为JUnitRunner)放在同一个包中。

import org.junit.runner.RunWith;

import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;

@CucumberOptions(features={"src/test/resources/test.feature"},glue={"cukes"},plugin={"pretty","html:target/report"})
@RunWith(Cucumber.class)
public class JUnitRunner
{

}

在你的src / test / resources文件夹下创建一个cukes命名文件夹并保留test.feature文件

Feature: Test feature
Scenario: To test scenario
Given order

现在运行你的JUnitRunner,你应该在控制台上看到以下输出:

Feature: Test feature
passed
Test hook
To test scenario

看看这个github回购。它在黄瓜中有很好的例子:CucumberJVMExamples。 Pradeep先生所做的出色工作。这应该回答你的所有问题