Kde v automatizovanom testovaní možno použiť vzor Singleton?
sobes.tech AI
Odpoveď od AI
V automatickom testovaní sa Singleton často používa na správu zdrojov, ktoré musia byť jedinečné počas celej testovacej relácie.
Príklady použitia:
-
Správa WebDriver: Na zabezpečenie jediného inštancie objektu WebDriver, ktorý používajú všetky testovacie triedy. To umožňuje vyhnúť sa opakovanému otváraniu/zatváraniu prehliadača a zachovať stav medzi krokmi testu.
public class WebDriverSingleton { private static WebDriver instance; private WebDriverSingleton() { // Súkromný konštruktor na zabránenie vytvárania inštancií } public static WebDriver getInstance() { if (instance == null) { // Inicializácia WebDriver (napríklad Chrome, Firefox) instance = new ChromeDriver(); } return instance; } public static void quitDriver() { if (instance != null) { instance.quit(); instance = null; } } }// Použitie v testovacej triede public class MyTests { @BeforeClass public void setup() { WebDriver driver = WebDriverSingleton.getInstance(); // Použitie driver } @AfterClass public void tearDown() { WebDriverSingleton.quitDriver(); } // Testovacie metódy } -
Správa pripojenia k databáze: Záruka, že existuje iba jedno aktívne spojenie s databázou na vykonávanie predpokladov testov alebo kontrolu údajov.
public class DatabaseConnection { private static Connection instance; private DatabaseConnection() { // Súkromný konštruktor } public static Connection getInstance() { if (instance == null) { try { // Nastavenie spojenia s databázou instance = DriverManager.getConnection("jdbc:mysql://localhost:3306/testdb", "user", "password"); } catch (SQLException e) { e.printStackTrace(); } } return instance; } public static void closeConnection() { if (instance != null) { try { instance.close(); instance = null; } catch (SQLException e) { e.printStackTrace(); } } } } -
Správa konfiguračného súboru: Načítanie parametrov konfigurácie zo súboru na začiatku testovacieho behu a poskytnutie jednotného prístupu k nim.
import java.io.IOException; import java.io.InputStream; import java.util.Properties; public class ConfigurationManager { private static ConfigurationManager instance; private Properties properties; private ConfigurationManager() { properties = new Properties(); try (InputStream input = getClass().getClassLoader().getResourceAsStream("config.properties")) { if (input == null) { System.out.println("Sorry, unable to find config.properties"); return; } properties.load(input); } catch (IOException ex) { ex.printStackTrace(); } } public static ConfigurationManager getInstance() { if (instance == null) { instance = new ConfigurationManager(); } return instance; } public String getProperty(String key) { return properties.getProperty(key); } } -
Správa logovania: Jednotný inštancia loggera na centralizované vedenie logov testovacieho behu.
Použitie Singleton pomáha spravovať zdroje, ktoré vyžadujú jedinečnosť, avšak je potrebné byť opatrný pri jeho používaní, najmä v viacvláknových testovacích rámcoch, kde môže dôjsť ku konkurentnému prístupu a potrebe synchronizácie. V takých prípadoch môžu byť vhodnejšie zložitejšie prístupy, napríklad použitie ThreadLocal.