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. - Απομόνωση: Η λογική δημιουργίας αντικειμένου συγκεντρώνεται σε ένα μέρος (την εργοστασία), γεγονός που διευκολύνει τη συντήρηση.