TestNG Initialization Не удалось инициализировать объект - PullRequest
0 голосов
/ 02 марта 2020

У меня есть абстрактный класс, который содержит логики инициализации c из @BeforeSuite и BeforeMethod. Объект Client инициализируется в методе @BeforeSuite и используется в BeforeMethod. Однако, когда я распечатываю порядок выполнения и проверку на ноль в обоих методах, порядок выполнения работает как положено, но BeforeMethod сообщает, что клиентская ссылка является нулевой, что не имеет смысла, так как @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
...
}

1 Ответ

0 голосов
/ 02 марта 2020

Я скопировал твой код и все отлично работает ...

 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...