Middle+
Welke patroon vind je het belangrijkst na Page Object?
sobes.tech AI
Antwoord van AI
Factory Method.
Maakt het mogelijk om objecten te maken zonder de specifieke klasse in de client-code aan te geven. Dit is belangrijk voor flexibiliteit en uitbreidbaarheid van geautomatiseerde tests, bijvoorbeeld bij het werken met verschillende browsers of platforms.
Voorbeeld van gebruik in automatiseringscontext:
Stel dat we een interface WebDriverFactory hebben en implementaties voor verschillende browsers (ChromeWebDriverFactory, FirefoxWebDriverFactory). De Factory Method maakt het mogelijk om een instantie van de benodigde driver te verkrijgen zonder conditionele constructies (if/else) in de testcode.
// Interface van de factory
interface WebDriverFactory {
WebDriver createDriver();
}
// Implementatie voor Chrome
class ChromeWebDriverFactory implements WebDriverFactory {
@Override
public WebDriver createDriver() {
WebDriverManager.chromedriver().setup();
return new ChromeDriver();
}
}
// Implementatie voor Firefox
class FirefoxWebDriverFactory implements WebDriverFactory {
@Override
public WebDriver createDriver() {
WebDriverManager.firefoxdriver().setup();
return new FirefoxDriver();
}
}
// Gebruik van de factory in de test
public class BaseTest {
protected WebDriver driver;
@BeforeMethod
public void setupTest() {
WebDriverFactory factory = getWebDriverFactory("chrome"); // Verkrijg de benodigde factory (implementatie kan verschillen)
driver = factory.createDriver(); // Maak de driver via de factory
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("Niet-ondersteunde browser: " + browser);
}
@AfterMethod
public void tearDownTest() {
if (driver != null) {
driver.quit();
}
}
}
Voordelen:
- Lage koppeling: De klantcode hangt alleen af van de interface van de factory, niet van concrete implementaties.
- Uitbreidbaarheid: Het is eenvoudig om ondersteuning voor een nieuwe browser toe te voegen door een nieuwe factory te maken en de methode
getWebDriverFactoryaan te passen. - Isolatie: De logica voor het maken van het object is geconcentreerd op één plek (de factory), wat het onderhoud vereenvoudigt.