TestNG初始化失败,无法初始化对象

问题描述 投票:0回答:1

我有一个抽象类,其中包含@BeforeSuiteBeforeMethod的初始化逻辑。 Client对象在@BeforeSuite方法中初始化,并在BeforeMethod中使用。但是,当我在两种方法中都打印出执行顺序和null检查时,执行顺序可以按预期工作,但是BeforeMethod报告客户端引用为null,这没有意义,因为@BeforeSuite已经对其进行了初始化。提供代码示例和打印结果:

public abstract class TestBase {
public Client client;
@BeforeSuite
public void suiteSetup() {
    client = initializeClient();
    System.out.println("BeforeSuite");
    System.out.println(client == null); // print false
}

@BeforeMethod
public void suiteSetup() {
    System.out.println("BeforeMethod");
    System.out.println(client == null); // print true
    client.call(); // Throw nullpointer exception
}
}

TestClass extends TestBase {
@Test
...
}
testng
1个回答
0
投票

我复制了您的代码,并且一切正常...

 public class Client {
        public void call() {
            System.out.println("CALL");
        }
    }

    public Client initializeClient() {
        return new Client();
    }

    public Client client;

    @BeforeSuite
    public void suiteSetupQ() {
        client = initializeClient();
        System.out.println("BeforeSuite");
        System.out.println(client == null);
    }

    @BeforeMethod
    public void suiteSetup() {
        System.out.println("BeforeMethod");
        System.out.println(client == null);
        client.call();
    }

    @Test
    void clientTest() {
        System.out.println("test");
    }

标准输出:

BeforeSuite
false


BeforeMethod
false
CALL


test
© www.soinside.com 2019 - 2024. All rights reserved.