我正在尝试弄清楚如何在运行所有黄瓜测试之前和之后运行一些代码。
几天来,我一直在追踪一个错误,其中我们的一些进程在服务器上创建作业,并且没有正确清理它。 这很容易错过,所以理想情况下,我不希望工程师必须手动为每个测试添加检查。
我希望有一种方法可以在运行任何测试之前放置一个钩子来缓存服务器上存在多少个作业,然后在最后放置一个钩子以确保值没有更改。
我知道这并不是使用黄瓜的最佳方式,因为这更像是一种系统测试类型的事情,但这样做将是将其融入现有基础设施的最佳方式。
在运行文件中使用@BeforeClass
和@AfterClass
批注。
@RunWith(Cucumber.class)
@Cucumber.Options(
format = {"json", "<the report file>"},
features = {"<the feature file>"},
strict = false,
glue = {"<package with steps classes>"})
public class TestRunFile {
@BeforeClass
public static void getJobNumbersOnServerBeforeStarting() {
//Implement logic
}
@AfterClass
public static void getJobNumbersOnServerAfterCompletion() {
//Implement logic
}
}
使用标记的钩子怎么样。
@Before("@jobCheck")
public void beforeScenario() {
// actions
}
@After("@jobCheck")
public void afterScenario() {
// actions
}
然后,对于需要此检查的每个方案,在方案定义之前添加@jobCheck,如下所示。
Feature: Some feature description
@jobCheck
Scenario: It should process a sentence
// The steps
有关 JVM 钩子的更多信息,请访问:https://zsoltfabok.com/blog/2012/09/cucumber-jvm-hooks/