黄瓜中的java场景大纲挂钩
我正在使用Java和Cucumber。我需要在每个场景大纲之后做一些动作。我知道有@Before和@After钩子,但它们适用于场景大纲中的每个场景。是否有可能在大纲中的所有场景之后而不是在每个场景之后启动某些操作
例如:
Scenario Outline: Some scenario
Given given actions
When when actions
Then display <value>
Examples:
|value|
|a |
|b |
我想按以下方式执行:
@行动前
价值
b值
@行动后
@行动前
//另一个场景大纲输出
@行动后
# 1 楼答案
一种方法是为运行程序使用junit或testng的
BeforeClass and AfterClass
方法。问题是功能文件中只能有一个scenariooutline,它需要一个唯一的runner类让一个方法只在场景大纲的第一个场景中运行是非常容易的。使用静态标志创建只运行一次的before钩子。修改Before钩子以运行某些标记等
尽管这对于功能文件中的一个场景大纲很有效。否则,您将需要复制每个场景大纲的标志。对于并行运行,它可能会变得混乱
这是一个更好但有点复杂的解决方案,需要将示例表拆分为3,并给出顶部和底部零件标记
添加下面带有标记的钩子方法。也可以将标记添加到中间部分 如果有任何自定义逻辑
如果只有一个示例,只需将两个标记添加到下面的示例中即可
创建表时需要小心,以确保@StartIt和@EndIt标记只存在一个示例行
# 2 楼答案
是的,你可以使用标签
这里我们将tag1指定为标记
现在,在步骤定义中,您可以使用如下内容:
这些@before和@after是tag1 now特有的 我希望这有帮助
# 3 楼答案
这是一个困难且不被Cucumber支持的原因之一,因为这是一个非常糟糕的主意。良好的测试实践规定,在运行每个测试之前,您必须从头开始。如果您像现在这样将测试链接在一起,那么当出现问题时,您必须确定测试是否失败,或者之前测试中的某些内容是否导致了问题。这很快成为一个巨大的皮塔
不要这样做,你会后悔的;)