我刚刚开始使用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
方法吗?
答案 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
===============================================