You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

执行派生类内@Test用例时基类的TestNG注解是如何运行的?

问题核心原因:TestNG的注解继承特性

这是TestNG原生提供的能力,不需要额外配置就能生效,底层逻辑如下:

  • TestNG在加载测试类时,会递归扫描当前类以及它所有父类的方法,识别所有带TestNG注解(包括@Test、@BeforeMethod、@AfterMethod等)的方法
  • 只要父类的配置方法不是private修饰,就会被纳入当前测试类的执行流程中:
    • 所有@BeforeMethod注解的方法会在每一个@Test方法执行前运行
    • 所有@AfterMethod注解的方法会在每一个@Test方法执行后运行

你给出的代码中,TestBase的setup()和tearDown()都是public修饰的,完全符合继承要求,因此LoginTest作为子类运行测试时,就会自动触发父类的这两个方法执行。


这种写法的优势

这是UI自动化测试的通用最佳实践:

  • 通用的浏览器初始化、环境地址加载、资源销毁逻辑全部抽离到父类,不用每个测试类重复编写,大幅减少冗余代码
  • 后续新增测试类只需要继承TestBase,就能直接复用通用逻辑,不用额外处理启动关闭浏览器的逻辑

扩展说明

如果子类中也定义了带@BeforeMethod/@AfterMethod注解的方法,TestNG默认会先执行父类的配置方法,再执行子类的配置方法,你也可以通过priority参数调整执行顺序。

内容的提问来源于stack exchange,提问作者M Reus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 15:54:05