Avtomatlaşdırılmış testlərdə Singleton dizayn şablonunu harada tətbiq etmək olar?
sobes.tech Süni İntellekt
AI-dan cavab
Av avtomatik sınaqlarda Singleton tez-tez istifadə olunur, resursları idarə etmək üçün ki, bütün test sessiyası boyunca tək nümunə olmalıdır.
İstifadə nümunələri:
-
WebDriver idarəetməsi: Bütün test sinifləri tərəfindən istifadə olunan tək WebDriver nümunəsini təmin etmək üçün. Bu, brauzeri yenidən açıb/qapamağı qarşısını alır və test addımları arasında vəziyyəti saxlayır.
public class WebDriverSingleton { private static WebDriver instance; private WebDriverSingleton() { // Xüsusi konstruktor nümunələrin yaradılmasını qarşısını almaq üçün } public static WebDriver getInstance() { if (instance == null) { // WebDriver-i başlat (məsələn, Chrome, Firefox) instance = new ChromeDriver(); } return instance; } public static void quitDriver() { if (instance != null) { instance.quit(); instance = null; } } }// Test sinifində istifadə public class MyTests { @BeforeClass public void setup() { WebDriver driver = WebDriverSingleton.getInstance(); // driver istifadə et } @AfterClass public void tearDown() { WebDriverSingleton.quitDriver(); } // Test metodları } -
Verilənlər bazası əlaqəsinin idarə olunması: Test şərtlərini və ya məlumatların yoxlanmasını həyata keçirmək üçün yalnız bir aktiv əlaqənin olmasını təmin edir.
public class DatabaseConnection { private static Connection instance; private DatabaseConnection() { // Xüsusi konstruktor } public static Connection getInstance() { if (instance == null) { try { // Verilənlər bazası ilə əlaqə qur 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(); } } } } -
Konfiqurasiya faylının idarə olunması: Testin başlanğıcında konfiqurasiya parametrlərini fayldan yükləmək və onlara vahid giriş təmin etmək.
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("Bağışlayın, config.properties tapılmadı"); 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); } } -
Jurnal idarəetməsi: Testin icrası zamanı mərkəzləşdirilmiş jurnal üçün tək logger nümunəsi.
Singleton istifadəsi, unikal olması tələb olunan resursların idarə olunmasına kömək edir, lakin çoxnüvəli test çərçivələrində istifadə zamanı diqqətli olmaq lazımdır, çünki eyni zamanda giriş və sinxronizasiya problemləri yarana bilər. Belə hallarda, daha mürəkkəb yanaşmalar, məsələn, ThreadLocal istifadə etmək lazım ola bilər.