Quelle est la meilleure approche pour instancier des objets lors de la création d'étapes dans un modèle d'objet de page Java?Meilleures pratiques du modèle d'objet Java Page - Nouveaux objets
Est-ce que quelqu'un sait comment les scripts Cucumber sont compilés?
J'imagine que si tout est construit et respecté la 2ème ou 3ème option ci-dessous peut être la meilleure approche.
Si seulement les étapes liées au test en cours d'exécution sont compilées, j'imagine que ce serait le premier.
J'ai l'exemple suivant:
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();
}
Toutes les étapes ci-dessus (et plus encore dans la même classe LoginSteps.java) commencent par
new HomePage(driver).clickLoginButton();
Est-ce la meilleure approche, ou est il vaut mieux créer une seule instance?
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();
}
OU est encore plus efficace d'avoir l'instanciation toutes les pages dans une classe « baseSteps » qui LoginSteps étend?
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);
}
Je vais essayer et voir si je peux trouver une différence. Le raisonnement pour cela est parce que je vais les gérer de façon continue et j'ai besoin qu'ils soient aussi efficaces que possible. Merci de votre aide. –