2017-01-10 3 views
0

Каков наилучший способ создания объектов при создании шагов в объектной модели Java Page?Практическая модель объектной модели Java - новые объекты

Кто-нибудь знает, как скомпилированы скрипты огурца?

Я бы предположил, что если все будет построено и выполнено, второй или третий вариант ниже может быть лучшим подходом.

Если скомпилированы только шаги, связанные с выполняемым тестом, я бы предположил, что это будет первый.

У меня есть следующий пример:

private LoginPage loginPage = new LoginPage(driver); 

@Given("^I have logged in as customer with two stored cards$") 
public void iHaveLoggedInAsCustomerWithTwoStoredCards() throws Throwable { 
    new HomePage(driver).clickLoginButton(); 
    loginPage.enterEmail("[email protected]"); 
    loginPage.enterPassword("Password1"); 
    loginPage.clickLogin();   
} 

@Given("^I have logged in as customer with expired card$") 
public void iHaveLoggedInAsCustomerWithExpiredCard() throws Throwable { 
    new HomePage(driver).clickLoginButton(); 
    loginPage.enterEmail("[email protected]"); 
    loginPage.enterPassword("Password1"); 
    loginPage.clickLogin();   
} 

@Given("^the user logged in as customer with three stored cards$") 
public void theUserLoggedInAsCustomerWithThreeStoredCards() throws Throwable { 
    new HomePage(driver).clickLoginButton(); 
    loginPage.enterEmail("[email protected]"); 
    loginPage.enterPassword("Password1"); 
    loginPage.clickLogin();   
} 

Все вышеперечисленные шаги (плюс еще в том же классе LoginSteps.java) начинаются с

new HomePage(driver).clickLoginButton(); 

Это лучший подход, или лучше создать один экземпляр?

private LoginPage loginPage = new LoginPage(driver); 
private HomePage homePage = new HomePage(driver); 

@Given("^I have logged in as customer with two stored cards$") 
public void iHaveLoggedInAsCustomerWithTwoStoredCards() throws Throwable { 
    homePage.clickLoginButton(); 
    loginPage.enterEmail("[email protected]"); 
    loginPage.enterPassword("Password1"); 
    loginPage.clickLogin();   
} 

@Given("^I have logged in as customer with expired card$") 
public void iHaveLoggedInAsCustomerWithExpiredCard() throws Throwable { 
    homePage.clickLoginButton(); 
    loginPage.enterEmail("[email protected]"); 
    loginPage.enterPassword("Password1"); 
    loginPage.clickLogin();   
} 

@Given("^the user logged in as customer with three stored cards$") 
public void theUserLoggedInAsCustomerWithThreeStoredCards() throws Throwable { 
    homePage.clickLoginButton(); 
    loginPage.enterEmail("[email protected]"); 
    loginPage.enterPassword("Password1"); 
    loginPage.clickLogin();   
} 

ИЛИ является еще более эффективным, чтобы иметь экземпляра все страницы в классе «baseSteps», который проходит LoginSteps?

public class LoginSteps extends BaseSteps { 
    @Given("^I have logged in as customer with two stored cards$") 
    public void iHaveLoggedInAsCustomerWithTwoStoredCards() throws Throwable { 
     homePage.clickLoginButton(); 
     loginPage.enterEmail("[email protected]"); 
     loginPage.enterPassword("Password1"); 
     loginPage.clickLogin();   
    } 

    @Given("^I have logged in as customer with expired card$") 
    public void iHaveLoggedInAsCustomerWithExpiredCard() throws Throwable { 
     homePage.clickLoginButton(); 
     loginPage.enterEmail("[email protected]"); 
     loginPage.enterPassword("Password1"); 
     loginPage.clickLogin();   
    } 

    @Given("^the user logged in as customer with three stored cards$") 
    public void theUserLoggedInAsCustomerWithThreeStoredCards() throws Throwable { 
     homePage.clickLoginButton(); 
     loginPage.enterEmail("[email protected]"); 
     loginPage.enterPassword("Password1"); 
     loginPage.clickLogin();   
    } 
} 

public baseSteps { 

    protected LoginPage loginPage = new LoginPage(driver); 
    protected HomePage homePage = new HomePage(driver); 
} 

ответ

0

Я бы оценил, какая версия наиболее эффективна.

Как скомпилировать код огурца, зависит от вашего инструмента построения. Я бы предположил, что все скомпилировано до его использования. Но JVM, который оптимизирует себя после некоторого исполнения, может немного поработать.

Мне действительно интересно узнать, почему вы думаете о производительности на этом уровне? Ожидаете ли вы выполнять этот код часами за раз? Большинство моих сценариев короткие, выполнены на второй шкале, а затем выброшены.

+0

Я дам, что пойду и посмотрю, смогу ли я найти какую-либо разницу. Причиной этого является то, что я буду использовать их на постоянной основе, и мне нужно, чтобы они были максимально эффективными. Спасибо за вашу помощь. –