我使用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() {
}
}
我需要定义将在整个项目的每个步骤之前和之后执行的方法,类似于方案的那些方法。
答案 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先生所做的出色工作。这应该回答你的所有问题