我有一个抽象类,其中包含@BeforeSuite
和BeforeMethod
的初始化逻辑。 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
...
}
答案 0 :(得分: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