1 回答

TA贡献2003条经验 获得超2个赞
问题是 Cucumber 正在执行在各种包类中定义的所有@Before和@After方法stepDefinition。这也是预期的情况,因为除非您专门告诉它,否则黄瓜不知道要执行哪些方法。
对此的一个简单解决方案是为每个测试用例创建不同的包来保存不同的类,但正如 OP 正确指出的那样,对于 100 个用例来说,这不是一个可行的解决方案,并且这种方法将限制用户无法从单个运行程序类执行所有功能文件。
解决方案 -
1)对于这个特定情况下,使用@BeforeClass和@AfterClassJUnit标注,而不是@Before和@After黄瓜注解。由于每个测试用例 Step Def 都有自己的类,这应该适用于您的情况。
2) 你也可以使用Tagged Hooks。它基本上是将钩子附加到场景中的名称。前任 -
功能文件 -
@Test1
Scenario: blah blah
@Test2
Scenario: blah blah 2
步骤定义 -
@Before("@Test1")
public void beforeFirst(){
//This will run only before the Scenario Test1
}
@Before("@Test2")
public void beforeSecond(){
//This will run only before the Scenario Test2
}
添加回答
举报