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