Sobes.tech
Middle+

Care este cel mai important pattern după Page Object?

sobes.tech AI

Răspuns de la AI

Metoda Fabrica.

Permite crearea obiectelor fără a specifica clasa concretă în codul clientului. Acest lucru este important pentru flexibilitatea și extensibilitatea testelor automate, de exemplu, atunci când se lucrează cu diferite browsere sau platforme.

Exemplu de utilizare în contextul automatizării:

Presupunem că avem o interfață WebDriverFactory și implementările sale pentru diferite browsere (ChromeWebDriverFactory, FirefoxWebDriverFactory). Metoda Fabrica permite obținerea unei instanțe a driver-ului necesar fără a recurge la construcții condiționale (if/else) în codul de test.

// Interfața fabricii
interface WebDriverFactory {
    WebDriver createDriver();
}

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

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

// Utilizarea fabricii în test
public class BaseTest {
    protected WebDriver driver;

    @BeforeMethod
    public void setupTest() {
        WebDriverFactory factory = getWebDriverFactory("chrome"); // Obține fabrica necesară (implementarea poate varia)
        driver = factory.createDriver(); // Creează driver-ul prin fabrică
        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("Browser neacceptat: " + browser);
    }

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

Avantaje:

  • Cuplaj scăzut: Codul client depinde doar de interfața fabricii, nu de implementări concrete.
  • Extensibilitate: Este ușor să adaugi suport pentru un nou browser creând o nouă fabrică și modificând metoda getWebDriverFactory.
  • Izolare: Logica de creare a obiectului este concentrată într-un singur loc (fabrica), ceea ce facilitează întreținerea.