TestNg,注释"beforeTestMethod"并覆盖

tan*_*ens 2 java testng

对于我的测试,我正在使用一个基类MyTestBase定义一个setup()做一些基本准备的方法:

public class MyTestBase {
    @Configuration( beforeTestMethod=true )
    protected void setup() {
        // do base preparations
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我有一些更具体的测试类,必须做好自己的准备.有多种方法可以实现这一点.

我可以用@Override:

public class MySpecialTestBase extends MyTestBase {
    @Override
    protected void setup() {
        super.setup();
        // do additional preparations
    }
}
Run Code Online (Sandbox Code Playgroud)

...或者我可以使用单独的设置方法:

public class MySpecialTestBase extends MyTestBase {
    @Configuration( beforeTestMethod=true )
    protected void setupSpecial() {
        // do additional preparations
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有一种优先实现方法?

Ror*_*ick 5

我更喜欢使用@Configuration注释.@Override并且super更脆弱.你可以忘记打电话super.setup(),或在错误的地方打电话.同时,@Configuration如果需要,使用单独的方法可以让您为子设置方法选择更合适的命名,并且您可以获得TestNG(parent,child)保证的设置顺序.

还有两点:

  1. 我做父母设置final是为了禁止意外覆盖.
  2. 我会用@BeforeMethod注释.它们从TestNG 5.0开始提供.当然,对于旧版本,您不得不使用@Configuration.