@BeforeMethod和继承 - 执行顺序(TestNG)

ecb*_*die 12 java testng

我的问题与此SOF问题基本相同,但处理的@BeforeMethod不是@BeforeClassTestNG.

在确定带@BeforeMethod注释的方法执行的顺序时,测试类继承是否会起作用?如果我有A类并且B类扩展A并且两者都有一个@BeforeMethod方法,则父母的(A)将在孩子的(B)之前运行,或者孩子在父母之前运行,或者命令是否依赖于其他因素如此作为方法名称的字母顺序.我正在尝试查看是否存在我可以依赖的继承顺序,而不必使用注释的参数,例如dependsOnMethods.

sle*_*ske 7

如果我有A类并且B类扩展A并且两者都有一个@BeforeMethod方法,那么父母的(A)将在孩子的(B)之前运行[...]

是他们会.

@BeforeMethod方法将以继承顺序运行 - 首先是最高的超类,然后是继承链.@AfterMethod方法以相反的顺序运行(继承链).

但请注意,不保证一个类中多个带注释的方法的顺序(因此最好避免这种情况).


阅读代码,在所有版本的TestNG中似乎都是如此,但它仅在2016年10月记录:

当放置在TestNG类的超类上时,上述注释也将被兑现(继承).例如,这对于在公共超类中集中多个测试类的测试设置很有用.

在这种情况下,TestNG保证"@Before"方法以继承顺序执行(首先是最高超类,然后是继承链),而"@After"方法则按相反的顺序执行(上传继承链).

请参阅GitHub上的documentation-main.html在线文档.

免责声明:是我编写并将此添加内容提交给文档.