Расширение от базового класса с TestNG с java - PullRequest
0 голосов
/ 23 февраля 2020

Я пишу несколько тестовых классов и продолжаю базовый тестовый класс. Но проблема в том, что хотя я блокирую переменную 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
}


1 Ответ

1 голос
/ 23 февраля 2020

Похоже, вы пытаетесь использовать шаблон Singleton. Я бы предложил прочитать эту статью, там есть четкое объяснение и четкие примеры реализации - https://www.journaldev.com/1377/java-singleton-design-pattern-best-practices-examples#lazy -инициализация

Есть много разных способов его инициализации, но я бы хотел предлагаю начать с Lazy one - ссылка выше следует непосредственно за ним.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...