Sobes.tech
Middle+

Page Object'ten sonra en önemli desen hangisidir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Fabrika Yöntemi.

Müşteri kodunda belirli bir sınıfı belirtmeden nesneler oluşturmanıza olanak tanır. Bu, otomatik testlerin esnekliği ve genişletilebilirliği için önemlidir, örneğin farklı tarayıcılar veya platformlar ile çalışırken.

Otomasyon bağlamında kullanım örneği:

Diyelim ki WebDriverFactory adlı bir arayüzümüz ve farklı tarayıcılar için uygulamaları (ChromeWebDriverFactory, FirefoxWebDriverFactory) var. Fabrika Yöntemi, test kodunda koşullu ifadeler (if/else) kullanmadan gerekli sürücünün örneğini almayı sağlar.

// Fabrika arayüzü
interface WebDriverFactory {
    WebDriver createDriver();
}

// Chrome için uygulama
class ChromeWebDriverFactory implements WebDriverFactory {
    @Override
    public WebDriver createDriver() {
        WebDriverManager.chromedriver().setup();
        return new ChromeDriver();
    }
}

// Firefox için uygulama
class FirefoxWebDriverFactory implements WebDriverFactory {
    @Override
    public WebDriver createDriver() {
        WebDriverManager.firefoxdriver().setup();
        return new FirefoxDriver();
    }
}

// Fabrika kullanımı testte
public class BaseTest {
    protected WebDriver driver;

    @BeforeMethod
    public void setupTest() {
        WebDriverFactory factory = getWebDriverFactory("chrome"); // Gerekli fabrikayı al (uygulama farklı olabilir)
        driver = factory.createDriver(); // Fabrika aracılığıyla sürücü oluştur
        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("Desteklenmeyen tarayıcı: " + browser);
    }

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

Faydaları:

  • Düşük bağlılık: Müşteri kodu sadece fabrika arayüzüne bağlıdır, somut uygulamalara değil.
  • Genişletilebilirlik: Yeni bir tarayıcı desteği eklemek kolaydır; yeni bir fabrika oluşturup getWebDriverFactory metodunu değiştirmek yeterlidir.
  • İzolasyon: Nesne oluşturma mantığı tek bir yerde (fabrika) yoğunlaşmıştır, bu da bakımı kolaylaştırır.