Avtomatlashtirilgan testlarda Singleton dizayn shablonini qayerda qo'llash mumkin?
sobes.tech AI
AIdan javob
Otomatik testlarda Singleton, test seansı boyunca tək nüsxəyə sahib olması lazım olan resursların idarə olunması üçün tez-tez istifadə olunur.
İstifadə nümunələri:
-
WebDriver idarəetməsi: Bütün test sinifləri tərəfindən istifadə olunan tək WebDriver obyektinin nümunəsini təmin etmək. Bu, brauzeri təkrar-təkrar açıb bağlamağı və test addımları arasında vəziyyəti saxlamağı qarşısını alır.
public class WebDriverSingleton { private static WebDriver instance; private WebDriverSingleton() { // Xüsusi konstruktor, nümunə yaradılmasını əngəlləmək üçün } public static WebDriver getInstance() { if (instance == null) { // WebDriver-in başlanğıcı (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ə } @AfterClass public void tearDown() { WebDriverSingleton.quitDriver(); } // Test metodları } -
Verilənlər bazası əlaqəsinin idarə olunması: Testlərin əvvəlcədən şə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 tək 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); } } -
Logların idarə olunması: Test icrasının loglarını mərkəzləşdirilmiş şəkildə saxlamaq üçün tək bir logger nümunəsi.
Singleton istifadəsi, unikal resursların idarə olunmasına kömək edir, lakin onun istifadəsinə diqqət yetirmək lazımdır, xüsusən çox iş parçacıklı test çərçivələrində, burada eyni zamanda giriş və sinxronizasiya problemləri yarana bilər. Bu hallarda, ThreadLocal kimi daha mürəkkəb yanaşmalar lazım ola bilər.