Hol alkalmazható a Singleton tervezési minta az automatizált tesztelésben?
sobes.tech MI
Válasz az MI-től
Az autotesztekben a Singleton gyakran használatos az olyan erőforrások kezelésére, amelyeknek az egész tesztelési szekvencián keresztül egyedinek kell maradniuk.
Használati példák:
-
WebDriver kezelése: Annak biztosítása érdekében, hogy csak egy WebDriver példány legyen, amit az összes tesztosztály használ. Ez elkerüli a böngésző újra megnyitását/zárását, és megőrzi az állapotot a tesztlépések között.
public class WebDriverSingleton { private static WebDriver instance; private WebDriverSingleton() { // Privát konstruktor az példányok létrehozásának megakadályozására } public static WebDriver getInstance() { if (instance == null) { // WebDriver inicializálása (pl. Chrome, Firefox) instance = new ChromeDriver(); } return instance; } public static void quitDriver() { if (instance != null) { instance.quit(); instance = null; } } }// Használat a tesztosztályban public class MyTests { @BeforeClass public void setup() { WebDriver driver = WebDriverSingleton.getInstance(); // driver használata } @AfterClass public void tearDown() { WebDriverSingleton.quitDriver(); } // Tesztmetódusok } -
Adatbázis kapcsolat kezelése: Biztosítja, hogy csak egy aktív kapcsolat legyen az adatbázissal a tesztelés előfeltételeinek vagy adatellenőrzések végrehajtásához.
public class DatabaseConnection { private static Connection instance; private DatabaseConnection() { // Privát konstruktor } public static Connection getInstance() { if (instance == null) { try { // Kapcsolat létesítése az adatbázissal 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(); } } } } -
Konfigurációs fájl kezelése: A konfigurációs paraméterek betöltése a fájlból a teszt futásának elején, és egységes hozzáférés biztosítása.
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("Sajnálom, nem található a 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); } } -
Naplózás kezelése: Egyetlen logger példány a teszt futtatásának központosított naplózásához.
A Singleton használata segít az olyan erőforrások kezelésében, amelyeknek egyedinek kell lenniük, de óvatosan kell alkalmazni, különösen több szálon futó tesztkeretrendszerekben, ahol versenyhelyzeti hozzáférés és szinkronizációs problémák léphetnek fel. Ilyen esetekben összetettebb megközelítések, például a ThreadLocal használata lehet szükséges.