gpt4 book ai didi

java - 使用 Java 从基类扩展 TestNG

转载 作者:行者123 更新时间:2023-12-02 08:58:15 25 4
gpt4 key购买 nike

我正在编写一些测试类并从基础测试类扩展。但问题是,即使我锁定 isInited 变量,它也会为每个类运行一次。它应该运行一次并初始化它,之后不应再次调用它,但它调用了 3 次,因为我有 3 个从基类扩展的类。请参阅下文。

Java 1.8 和 TestNG


public class BaseTest(){
private static isInited;
@BeforeClass
public void init(){
synchronized (BaseTest.class) {
//here even though I lock and initialize the variable this code is still called once for each class. I do not understand why this happens?
if (!isInited) {
//do some init
isInited=true;
}
}
}

public class TestClass1 extends BaseTest{

@BeforeClass
public void setup(){
//setup somethings
}

//test methods
}


public class TestClass2 extends BaseTest{

@BeforeClass
public void setup(){
//setup somethings
}

//test methods
}

public class TestClass3 extends BaseTest{

@BeforeClass
public void setup(){
//setup somethings
}

//test methods
}


最佳答案

看起来您正在尝试使用单例模式。我建议阅读这篇文章,里面有清晰的解释和清晰的实现示例 - https://www.journaldev.com/1377/java-singleton-design-pattern-best-practices-examples#lazy-initialization

有很多不同的方法来初始化它,但我建议从 Lazy 方法开始 - 上面的链接直接跟随它。

希望这会有所帮助。

关于java - 使用 Java 从基类扩展 TestNG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60359940/

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