Как создать объекты перед классом testNG? - PullRequest
0 голосов
/ 01 апреля 2020

У меня есть несколько тестовых классов testNG, которые расширяют базовый тестовый класс и используют одни и те же общие объекты. Я хочу, чтобы создание объекта выполнялось автоматически в BaseTest, поэтому мне не нужно включать его в каждый тестовый класс. На данный момент код работает, только если я добавлю createPages () в начало теста. Я попытался поместить их в класс BaseTest с помощью @BeforeClass и @BeforeSuite, но оба дали исключение нулевого указателя, означающее, что они не были созданы до запуска @Test test123, я верю.

public someTest extends BaseTest {

    @Test
    public void test123(){
        createPages(); //i want to be able to remove this and have it done in BaseTest
        menuPage.scroll();
    }
}

public BaseTest {
    MenuPage menuPage;

    public void createPages() {
        menuPage = new MenuPage(getDriver());
    }
/*
    @BeforeSuite
    public void beforeSuite() {
        createPages();
    }

    @BeforeClass
    public void beforeClass() {
        createPages();
    }
*/
}

1 Ответ

2 голосов
/ 01 апреля 2020

@ beforeTest - одна из таких аннотаций. Метод с аннотацией @ beforeTest будет запущен перед любым тестовым методом, принадлежащим классам внутри тега test

внутри вашего BaseTest

public class Basetest{
 @BeforeTest
    public void doBeforeTest() {
        createPages();
    }
}
...