Sobes.tech
Middle+

Page Object dan keyin eng muhim deb o'ylagan shablon nima?

sobes.tech AI

AIdan javob

Fabrik usulü.

Müştəri kodunda konkret sinfi göstərmədən obyektlər yaratmağa imkan verir. Bu, avtomatlaşdırılmış testlərin çevikliyi və genişləndirilməsi üçün vacibdir, məsələn, müxtəlif brauzerlər və ya platformalar ilə işləyərkən.

Avtomatlaşdırma kontekstində istifadə nümunəsi:

Tutaq ki, bizdə WebDriverFactory interfeysi və onun müxtəlif brauzerlər üçün tətbiqləri (ChromeWebDriverFactory, FirefoxWebDriverFactory) var. Fabrik üsulu, test kodunda şərti ifadələr (if/else) istifadə etmədən lazım olan sürücünün nümunəsini almağa imkan verir.

// Fabrika interfeysi
interface WebDriverFactory {
    WebDriver createDriver();
}

// Chrome üçün tətbiq
class ChromeWebDriverFactory implements WebDriverFactory {
    @Override
    public WebDriver createDriver() {
        WebDriverManager.chromedriver().setup();
        return new ChromeDriver();
    }
}

// Firefox üçün tətbiq
class FirefoxWebDriverFactory implements WebDriverFactory {
    @Override
    public WebDriver createDriver() {
        WebDriverManager.firefoxdriver().setup();
        return new FirefoxDriver();
    }
}

// Fabrikadan istifadə testdə
public class BaseTest {
    protected WebDriver driver;

    @BeforeMethod
    public void setupTest() {
        WebDriverFactory factory = getWebDriverFactory("chrome"); // Lazımi fabrikanı əldə et (tətbiq fərqli ola bilər)
        driver = factory.createDriver(); // Fabrika vasitəsilə sürücünü yarat
        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("Dəstəklənməyən brauzer: " + browser);
    }

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

Üstünlüklər:

  • Aşağı bağlılıq: Müştəri kodu yalnız fabrik interfeysinə bağlıdır, konkret tətbiqlərə yox.
  • Genişləndirmə: Yeni brauzer dəstəyi əlavə etmək asandır; yeni fabrika yaradıb getWebDriverFactory metodunu dəyişmək kifayətdir.
  • İzolasiya: Obrazların yaradılması loqikası tək bir yerdə (fabrika) cəmlənmişdir, bu da baxımı asanlaşdırır.