如何控制JBehave中Before-/AfterScenarios的执行顺序?
解决JBehave中BeforeScenario执行顺序问题
刚好之前在项目里碰到过一模一样的需求!JBehave的注解优先级机制完全能搞定这个事儿——不止你提到的@Then,@BeforeScenario和@AfterScenario同样支持priority参数来控制执行顺序。
核心逻辑
JBehave的优先级规则很直观:优先级数值越小,执行顺序越靠前。如果没显式设置,默认优先级是0。所以我们只需要给第三方框架的前置/后置方法设置更低的优先级,自己的方法设置更高的优先级,就能保证顺序符合要求。
具体实现
控制BeforeScenario顺序
给第三方框架的@BeforeScenario设置一个比自定义方法更小的优先级值,确保它先执行:// 第三方框架中的BeforeScenario(优先执行) @BeforeScenario(priority = 1) public void thirdPartyBeforeSetup() { // 第三方初始化逻辑 System.out.println("第三方BeforeScenario执行"); } // 自定义的BeforeScenario(后执行) @BeforeScenario(priority = 10) public void customBeforeSetup() { // 依赖第三方初始化的自定义逻辑 System.out.println("自定义BeforeScenario执行"); }控制AfterScenario顺序
如果需要控制后置方法的顺序,逻辑刚好反过来:如果希望自定义的清理逻辑先跑,第三方的后跑,就给自定义方法设置更小的优先级:// 自定义的AfterScenario(先执行) @AfterScenario(priority = 1) public void customCleanup() { System.out.println("自定义AfterScenario执行"); } // 第三方框架的AfterScenario(后执行) @AfterScenario(priority = 10) public void thirdPartyCleanup() { System.out.println("第三方AfterScenario执行"); }
验证方法
可以在每个方法里添加日志输出,运行测试后查看日志顺序,就能确认执行顺序是否符合预期啦。
内容的提问来源于stack exchange,提问作者Absent
相关产品推荐
相关产品推荐

