Sobes.tech
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 getWebDriverFactory aan te passen.
  • Isolatie: De logica voor het maken van het object is geconcentreerd op één plek (de factory), wat het onderhoud vereenvoudigt.