有没有办法在所有黄瓜测试运行后运行一个方法?
@After注释会在每次测试后运行,对吧?我想要的东西只能运行一次,但最后才会运行。
答案 0 :(得分:4)
您可以使用标准的JUnit注释。
在你的跑步者课上写下类似的内容:
@RunWith(Cucumber.class)
@Cucumber.Options(format = {"html:target/cucumber-html-report", "json-pretty:target/cucumber-json-report.json"})
public class RunCukesTest {
@BeforeClass
public static void setup() {
System.out.println("Ran the before");
}
@AfterClass
public static void teardown() {
System.out.println("Ran the after");
}
}
答案 1 :(得分:2)
您可以做的是为TestRunFinished
事件注册事件处理程序。为此,您可以创建一个自定义插件,该插件将为此事件注册您的钩子:
public class TestEventHandlerPlugin implements ConcurrentEventListener {
@Override
public void setEventPublisher(EventPublisher eventPublisher) {
eventPublisher.registerHandlerFor(TestRunFinished.class, teardown);
}
private EventHandler<TestRunFinished> teardown = event -> {
//run code after all tests
};
}
然后您将必须注册插件:
-p
/ --plugin
选项并传递Java类的完全限定名称:your.package.TestEventHandlerPlugin
@RunWith(Cucumber.class)
@CucumberOptions(plugin = "your.package.TestEventHandlerPlugin") //set features/glue as you need.
public class TestRunner {
}
答案 2 :(得分:1)
使用TestNG套件功能也可以。
@BeforeSuite
public static void setup() {
System.out.println("Ran once the before all the tests");
}
@AfterSuite
public static void cleanup() {
System.out.println("Ran once the after all the tests");
}
答案 3 :(得分:-3)
cucumber是一个场景基础测试,您应该逐步在.feature
文件中编写自己的场景,这些步骤分别按步骤定义执行。
因此,如果您希望在所有步骤之后发生某些事情,您应该在最后一步中编写它并在其步骤定义中开发此步骤。
此外,对于您希望在其他步骤之前执行的操作,您应该在.feature
文件中的所有步骤之前考虑一个步骤,并在其步骤定义中进行开发。