Sobes.tech
Middle+

Welches Muster hältst du nach dem Page Object für am wichtigsten?

sobes.tech KI

Antwort von AI

Fabrikmethode.

Ermöglicht die Erstellung von Objekten, ohne die konkrete Klasse im Client-Code anzugeben. Dies ist wichtig für Flexibilität und Erweiterbarkeit automatisierter Tests, z.B. bei der Arbeit mit verschiedenen Browsern oder Plattformen.

Beispiel für den Einsatz im Automatisierungskontext:

Angenommen, wir haben eine Schnittstelle WebDriverFactory und deren Implementierungen für verschiedene Browser (ChromeWebDriverFactory, FirefoxWebDriverFactory). Die Fabrikmethode ermöglicht es, eine Instanz des benötigten Treibers zu erhalten, ohne bedingte Konstruktionen (if/else) im Testcode zu verwenden.

// Schnittstelle der Fabrik
interface WebDriverFactory {
    WebDriver createDriver();
}

// Implementierung für Chrome
class ChromeWebDriverFactory implements WebDriverFactory {
    @Override
    public WebDriver createDriver() {
        WebDriverManager.chromedriver().setup();
        return new ChromeDriver();
    }
}

// Implementierung für Firefox
class FirefoxWebDriverFactory implements WebDriverFactory {
    @Override
    public WebDriver createDriver() {
        WebDriverManager.firefoxdriver().setup();
        return new FirefoxDriver();
    }
}

// Verwendung der Fabrik im Test
public class BaseTest {
    protected WebDriver driver;

    @BeforeMethod
    public void setupTest() {
        WebDriverFactory factory = getWebDriverFactory("chrome"); // Erhalte die benötigte Fabrik (Implementierung kann variieren)
        driver = factory.createDriver(); // Erstelle den Treiber über die Fabrik
        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("Nicht unterstützter Browser: " + browser);
    }

    @AfterMethod
    public void tearDownTest() {
        if (driver != null) {
            driver.quit();
        }
    }
}

Vorteile:

  • Geringe Kopplung: Der Client-Code hängt nur von der Schnittstelle der Fabrik ab, nicht von konkreten Implementierungen.
  • Erweiterbarkeit: Es ist einfach, Unterstützung für einen neuen Browser hinzuzufügen, indem eine neue Fabrik erstellt und die Methode getWebDriverFactory geändert wird.
  • Isolation: Die Logik zur Objekterstellung ist an einem Ort (der Fabrik) konzentriert, was die Wartung erleichtert.