Sobes.tech
Middle+

Aký vzor považujete za najdôležitejší po Page Object?

sobes.tech AI

Odpoveď od AI

Faktori metoda.

Umožňuje vytvárať objekty bez určenia konkrétnej triedy v kóde klienta. To je dôležité pre flexibilitu a rozšíriteľnosť automatických testov, napríklad pri práci s rôznymi prehliadačmi alebo platformami.

Príklad použitia v kontexte automatizácie:

Predstavme si, že máme rozhranie WebDriverFactory a jeho implementácie pre rôzne prehliadače (ChromeWebDriverFactory, FirefoxWebDriverFactory). Faktori metoda umožňuje získať inštanciu potrebného ovládača bez použitia podmienok (if/else) v testovacom kóde.

// Rozhranie fabriky
interface WebDriverFactory {
    WebDriver createDriver();
}

// Implementácia pre Chrome
class ChromeWebDriverFactory implements WebDriverFactory {
    @Override
    public WebDriver createDriver() {
        WebDriverManager.chromedriver().setup();
        return new ChromeDriver();
    }
}

// Implementácia pre Firefox
class FirefoxWebDriverFactory implements WebDriverFactory {
    @Override
    public WebDriver createDriver() {
        WebDriverManager.firefoxdriver().setup();
        return new FirefoxDriver();
    }
}

// Použitie fabriky v teste
public class BaseTest {
    protected WebDriver driver;

    @BeforeMethod
    public void setupTest() {
        WebDriverFactory factory = getWebDriverFactory("chrome"); // Získať potrebnú fabriku (implementácia môže byť rôzna)
        driver = factory.createDriver(); // Vytvoriť ovládač cez fabriku
        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("Nepodporovaný prehliadač: " + browser);
    }

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

Výhody:

  • Nízka väzba: Klientska kód závisí iba od rozhrania fabriky, nie od konkrétnych implementácií.
  • Rozšíriteľnosť: Jednoducho pridať podporu nového prehliadača vytvorením novej fabriky a zmenou metódy getWebDriverFactory.
  • Izolácia: Logika vytvárania objektu je sústredená na jednom mieste (fabrike), čo uľahčuje údržbu.