Middle+
Кой модел смяташ за най-важен след Page Object?
sobes.tech AI
Отговор от AI
Метод на фабриката.
Позволява създаването на обекти без да се указва конкретен клас в клиентския код. Това е важно за гъвкавостта и разширяемостта на автоматизираните тестове, например при работа с различни браузъри или платформи.
Пример за използване в контекста на автоматизация:
Да предположим, че имаме интерфейс 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. - Изолация: Логиката за създаване на обекта е концентрирана на едно място (фабриката), което улеснява поддръжката.