Middle+
Quel patron considères-tu comme le plus important après le Page Object?
sobes.tech IA
Réponse de l'IA
Méthode de Fabrique.
Permet de créer des objets sans spécifier la classe concrète dans le code client. Cela est important pour la flexibilité et l'extensibilité des tests automatisés, par exemple lors du travail avec différents navigateurs ou plateformes.
Exemple d'utilisation dans le contexte de l'automatisation :
Supposons que nous ayons une interface WebDriverFactory et ses implémentations pour différents navigateurs (ChromeWebDriverFactory, FirefoxWebDriverFactory). La méthode de fabrique permet d'obtenir une instance du pilote nécessaire sans recourir à des constructions conditionnelles (if/else) dans le code de test.
// Interface de la fabrique
interface WebDriverFactory {
WebDriver createDriver();
}
// Implémentation pour Chrome
class ChromeWebDriverFactory implements WebDriverFactory {
@Override
public WebDriver createDriver() {
WebDriverManager.chromedriver().setup();
return new ChromeDriver();
}
}
// Implémentation pour Firefox
class FirefoxWebDriverFactory implements WebDriverFactory {
@Override
public WebDriver createDriver() {
WebDriverManager.firefoxdriver().setup();
return new FirefoxDriver();
}
}
// Utilisation de la fabrique dans le test
public class BaseTest {
protected WebDriver driver;
@BeforeMethod
public void setupTest() {
WebDriverFactory factory = getWebDriverFactory("chrome"); // Obtenir la fabrique nécessaire (l'implémentation peut varier)
driver = factory.createDriver(); // Créer le pilote via la fabrique
driver.manage().window().maximize();
}
private WebDriverFactory getWebDriverFactory(String browser) {
if ("chrome".equalsIgnoreCase(browser)) {
return new ChromeWebDriverFactory();
} else if ("firefox".equalsIgnoreCase(browser)) {
return new FirefoxWebDriverFactory();
}
throw new IllegalArgumentException("Navigateur non supporté : " + browser);
}
@AfterMethod
public void tearDownTest() {
if (driver != null) {
driver.quit();
}
}
}
Avantages :
- Faible couplage : Le code client dépend uniquement de l'interface de la fabrique, pas des implémentations concrètes.
- Extensibilité : Facile d'ajouter la prise en charge d'un nouveau navigateur en créant une nouvelle fabrique et en modifiant la méthode
getWebDriverFactory. - Isolation : La logique de création de l'objet est concentrée en un seul endroit (la fabrique), ce qui facilite la maintenance.