Middle+
Qual padrão você considera mais importante após o Page Object?
sobes.tech IA
Resposta da IA
Método de Fábrica.
Permite criar objetos sem especificar a classe concreta no código do cliente. Isto é importante para a flexibilidade e escalabilidade dos testes automatizados, por exemplo, ao trabalhar com diferentes navegadores ou plataformas.
Exemplo de uso no contexto de automação:
Suponha que temos uma interface WebDriverFactory e suas implementações para diferentes navegadores (ChromeWebDriverFactory, FirefoxWebDriverFactory). O método de fábrica permite obter uma instância do driver necessário sem recorrer a construções condicionais (if/else) no código de teste.
// Interface da fábrica
interface WebDriverFactory {
WebDriver createDriver();
}
// Implementação para Chrome
class ChromeWebDriverFactory implements WebDriverFactory {
@Override
public WebDriver createDriver() {
WebDriverManager.chromedriver().setup();
return new ChromeDriver();
}
}
// Implementação para Firefox
class FirefoxWebDriverFactory implements WebDriverFactory {
@Override
public WebDriver createDriver() {
WebDriverManager.firefoxdriver().setup();
return new FirefoxDriver();
}
}
// Uso da fábrica no teste
public class BaseTest {
protected WebDriver driver;
@BeforeMethod
public void setupTest() {
WebDriverFactory factory = getWebDriverFactory("chrome"); // Obter a fábrica necessária (a implementação pode variar)
driver = factory.createDriver(); // Criar o driver através da fábrica
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("Navegador não suportado: " + browser);
}
@AfterMethod
public void tearDownTest() {
if (driver != null) {
driver.quit();
}
}
}
Vantagens:
- Baixo acoplamento: O código do cliente depende apenas da interface da fábrica, não das implementações concretas.
- Escalabilidade: É fácil adicionar suporte a um novo navegador criando uma nova fábrica e modificando o método
getWebDriverFactory. - Isolamento: A lógica de criação do objeto está concentrada em um único lugar (a fábrica), o que facilita a manutenção.