gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:00:00 27 4
gpt4 key购买 nike

我的问题和this SOF question基本一样,但处理 @BeforeMethod 而不是 TestNG 的 @BeforeClass

在确定 @BeforeMethod 注释方法的执行顺序时,测试类继承是否起到影响因素?如果我有 A 类和 B 类扩展 A 并且都有一个 @BeforeMethod 方法,那么 parent 的 (A) 会在 child 的 (B) 之前运行,还是 child 会在 parent 之前运行,或者顺序是否取决于其他一些因素,例如方法名称的字母顺序。我正在尝试查看是否存在可以依赖的继承顺序,而不必使用诸如 dependsOnMethods 之类的注释参数。

最佳答案

If I have class A and a class B extends A and both have one @BeforeMethod method, then will the parent's (A) run before the child's (B) [...]

是的,他们会。

@BeforeMethod 方法将按继承顺序运行 - 首先是最高的父类(super class),然后沿着继承链向下运行。 @AfterMethod 方法以相反的顺序运行(沿继承链向上)。

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


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

The annotations above will also be honored (inherited) when placed on a superclass of a TestNG class. This is useful for example to centralize test setup for multiple test classes in a common superclass.

In that case, TestNG guarantees that the "@Before" methods are executed in inheritance order (highest superclass first, then going down the inheritance chain), and the "@After" methods in reverse order (going up the inheritance chain).

参见 documentation-main.html在 GitHub 上,或 online documentation .

免责声明:是我编写并向文档提交了此添加内容。

关于java - @BeforeMethod 和继承 - 执行顺序(TestNG),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20826331/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com