Sobes.tech
Middle+

Melyik mintát tartod a legfontosabbnak a Page Object után?

sobes.tech MI

Válasz az MI-től

Gyárfüggvény.

Lehetővé teszi objektumok létrehozását anélkül, hogy a klienskódba konkrét osztályt írna. Ez fontos a rugalmasság és a bővíthetőség szempontjából az automatizált tesztekben, például különböző böngészőkkel vagy platformokkal való munkánál.

Példa az automatizálási kontextusban:

Tegyük fel, hogy van egy WebDriverFactory interfész és annak implementációi különböző böngészőkhöz (ChromeWebDriverFactory, FirefoxWebDriverFactory). A Gyárfüggvény lehetővé teszi a szükséges driver példányának megszerzését anélkül, hogy feltételes szerkezeteket (if/else) kellene alkalmazni a tesztkódban.

// Gyár interfész
interface WebDriverFactory {
    WebDriver createDriver();
}

// Chrome-hoz
class ChromeWebDriverFactory implements WebDriverFactory {
    @Override
    public WebDriver createDriver() {
        WebDriverManager.chromedriver().setup();
        return new ChromeDriver();
    }
}

// Firefox-hoz
class FirefoxWebDriverFactory implements WebDriverFactory {
    @Override
    public WebDriver createDriver() {
        WebDriverManager.firefoxdriver().setup();
        return new FirefoxDriver();
    }
}

// A gyár használata a tesztben
public class BaseTest {
    protected WebDriver driver;

    @BeforeMethod
    public void setupTest() {
        WebDriverFactory factory = getWebDriverFactory("chrome"); // A szükséges gyár beszerzése (a megvalósítás változhat)
        driver = factory.createDriver(); // Driver létrehozása a gyár segítségével
        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("Nem támogatott böngésző: " + browser);
    }

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

Előnyök:

  • Alacsony kötöttség: A klienskód csak a gyár interfészére támaszkodik, nem a konkrét implementációkra.
  • Bővíthetőség: Könnyű támogatást hozzáadni egy új böngészőhöz, új gyár létrehozásával és a getWebDriverFactory módosításával.
  • Izoláció: A objektum létrehozási logika egy helyen (a gyárban) összpontosul, ez megkönnyíti a karbantartást.