gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 05:55:03 26 4
gpt4 key购买 nike

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

A 类文件:

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

B 类文件:

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

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

最佳答案

您可以重写方法,如下例所示。在这种情况下,基类的@BeforeSuite将不会被执行。

测试A:

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");
}
}

测试B:

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
===============================================

关于java - 继承期间TestNG中@BeforeClass方法执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53322237/

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