Объясните пожалуйста в чем прикол. Изначально был один тестовый класс, где была такая структура:
public class MainAlfadetaliTest extends TestBase {
    private HomePage homepage;
    private Login login;
    private MainMenu mainMenu;
    @BeforeTest
    public void initPageObject() {
        homepage = PageFactory.initElements(driver, HomePage.class);
        login = PageFactory.initElements(driver, Login.class);
        mainMenu = PageFactory.initElements(driver, MainMenu.class);
    }
    @BeforeTest
    public void login() throws IOException, InterruptedException {
        homepage.open();
        login.inputEmail("ra-nt-office@yandex.ru");
        login.inputPassword();
        login.startLogIn();
        login.confirmByEmail();
        login.inputConfirmationCodeAndSubmit();
        mainMenu.selectCompany();
        mainMenu.selectStorage();
        mainMenu.openSearchMenu();
        mainMenu.openSearchDetailsForSale();
}
    @Test
    public void checkThatBuyerIsAddedInTheOrder() throws InterruptedException {
        order.setBuyer();
        order.checkThatTheBuyerIsAdded();
    }
    @AfterTest
    public void cancelOrder() throws InterruptedException {
        mainMenu.goToOrder();
        order.cancelTheOrder();
    }
Затем я добавил второй тестовый класс, где операции для подготовки к тесту примерно одинаковые, немного отличаются:
public class MainAlfadetaliTest extends TestBase {
    private HomePage homepage;
    private Login login;
    private MainMenu mainMenu;
    private SearchDetailsForSale searchDetailsForSale;
    private Order order;
    private TaskMenu taskMenu;
    @BeforeTest
    public void initPageObjects() {
        homepage = PageFactory.initElements(driver, HomePage.class);
        login = PageFactory.initElements(driver, Login.class);
        mainMenu = PageFactory.initElements(driver, MainMenu.class);
        searchDetailsForSale = PageFactory.initElements(driver, SearchDetailsForSale.class);
        order = PageFactory.initElements(driver, Order.class);
        taskMenu = PageFactory.initElements(driver, TaskMenu.class);
    }
    @BeforeTest
    public void checkThatTheTaskForCreatingTransferRequestsHaveAppeared() throws IOException, InterruptedException {
        homepage.open();
        login.inputEmail();
        login.inputPassword();
        login.startLogIn();
        login.confirmByEmail();
        login.inputConfirmationCodeAndSubmit();
        mainMenu.selectCompany();
        mainMenu.selectStorage();
        mainMenu.openSearchMenu();
        mainMenu.openSearchDetailsForSale();
        searchDetailsForSale.inputNameOfStorage();
        searchDetailsForSale.complete();
        searchDetailsForSale.findPartWithDefiniteQuantityAndClickTheMenuButton(1);
        searchDetailsForSale.clickTheButtonAddingToOrder();
        searchDetailsForSale.addThePartToOrder();
        searchDetailsForSale.findPartWithDefiniteQuantityAndClickTheMenuButton(1);
        searchDetailsForSale.clickTheButtonAddingToOrder();
        searchDetailsForSale.addThePartToOrder();
        mainMenu.goToOrder();
    }
    @Test
    public void checkThatTheTaskForCreatingTransferRequestsHaveAppeared() throws InterruptedException {
        taskMenu.openTaskMenu();
        taskMenu.checkThatCurrentTaskIsRight(2, "Создать заявки на перемещение");
    }
    @AfterTest
    public void cancelOrder() throws InterruptedException {
        mainMenu.goToOrder();
        order.cancelTheOrder();
    }
Если запустить второй класс, то вылетит ошибка “NullPointerException”. Но если во втором классе перед названием второго метода второго @BeforeTest написать login (то есть название метода будет “logincheckThatTheTaskForCreatingTransferRequestsHaveAppeared”), то тогда тесты отработают на ура. Тоже самое и с методом первого @BeforeTest. Сейчас этот метод с таким же названием как и в первом классе, и если название просто дописать(то есть initPageObjectdlsjflsjdfjsldfjlksdjflksdjf ), то все будет работать, но если вначале названия не будет стоять “initPageObject”, то опять будет ошибка “NullPointerException”. Объясните пожалуйста почему так?