Middle+
Koji obrazac smatraš najvažnijim nakon Page Object?
sobes.tech АИ
Одговор од АИ
Фабрички метод.
Он омогућава креирање објеката без навођења конкретне класе у коду клијента. Ово је важно за флексибилност и проширивост аутоматских тестова, на пример, при раду са различитим прегледачима или платформама.
Пример коришћења у контексту аутоматизације:
Замислите да имамо интерфејс WebDriverFactory и његове имплементације за различите прегледаче (ChromeWebDriverFactory, FirefoxWebDriverFactory). Фабрички метод омогућава добијање одговарајућег примерака драйвера, без коришћења условних конструкција (if/else) у тест коду.
// Интерфејс фабрике
interface WebDriverFactory {
WebDriver createDriver();
}
// Имплементација за Chrome
class ChromeWebDriverFactory implements WebDriverFactory {
@Override
public WebDriver createDriver() {
WebDriverManager.chromedriver().setup();
return new ChromeDriver();
}
}
// Имплементација за Firefox
class FirefoxWebDriverFactory implements WebDriverFactory {
@Override
public WebDriver createDriver() {
WebDriverManager.firefoxdriver().setup();
return new FirefoxDriver();
}
}
// Коришћење фабрике у тесту
public class BaseTest {
protected WebDriver driver;
@BeforeMethod
public void setupTest() {
WebDriverFactory factory = getWebDriverFactory("chrome"); // Добити одговарајућу фабрику (имплементација може бити различита)
driver = factory.createDriver(); // Креирати драйвер преко фабрике
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);
}
@AfterMethod
public void tearDownTest() {
if (driver != null) {
driver.quit();
}
}
}
Предности:
- Ниска повезаност: Клијентски код зависи само од интерфејса фабрике, а не од конкретних имплементација.
- Проширивост: Лако додавање подршке новом прегледачу, креирањем нове фабрике и изменом методе
getWebDriverFactory. - Изолација: Логика креирања објекта је концентрисана на једном месту (фабрици), што олакшава одржавање.