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
getWebDriverFactorygeändert wird. - Isolation: Die Logik zur Objekterstellung ist an einem Ort (der Fabrik) konzentriert, was die Wartung erleichtert.