继承期间在TestNG中执行@BeforeClass方法执行

时间:2018-11-15 15:00:06

标签: java testng

我刚刚开始使用TestNG,并且我有一个疑问。如果类A有一个@BeforeSuite方法,并且类B继承了类A,如下例所示:

A类文件:

class A
{
  @BeforeSuite
  public void beforeTest()
  {
    //something
  }
}

B类文件:

class B extends A
{
 @Test
 public void executeTest()
 {
  //something
 }
}

因此,在这种情况下,当我尝试执行@BeforeSuite时,肯定会运行类A的{​​{1}}。有什么方法可以禁止运行ClassB:executeTest(),而又不排除继承或禁用@BeforeSuite方法吗?

1 个答案:

答案 0 :(得分:1)

您可以覆盖下面的示例中的方法。在这种情况下,基类的@BeforeSuite将不会执行。

TestA:

import org.testng.annotations.BeforeSuite;
import org.testng.log4testng.Logger;

public class TestA {
    protected static Logger LOGGER = Logger.getLogger(TestA.class);

    @BeforeSuite
    public void beforeSuite() {
        LOGGER.warn("beforeSuite - TestA");
    }
}

TestB:

import org.testng.annotations.BeforeSuite;
import org.testng.annotations.Test;

public class TestB extends TestA {

    @BeforeSuite
    public void beforeSuite() {
        LOGGER.warn("beforeSuite - TestB");
    }

    @Test
    public void executeTest() {
        LOGGER.warn("executeTest - TestB");
    }
}

运行TestB并检查输出:

[TestA] [WARN] beforeSuite - TestB
[TestA] [WARN] executeTest - TestB

===============================================
Default Suite
Total tests run: 1, Failures: 0, Skips: 0
===============================================