Spring Framework 5.0 versiyasidan boshlab bitta JVM doirasida testlarni parallel bajarish uchun Spring TestContext Framework asosiy qo'llab-quvvatlashi mavjud. Bu, umuman olganda, ko'p test sinflari yoki test metodlarini test kodida yoki konfiguratsiyasida hech qanday o'zgarishlarsiz parallel bajarish mumkinligini bildiradi.
Eslab qoling, testlar to'plamiga parallelizatsiyani joriy etish kutilmagan yon ta'sirlar, dastur ishlashida g'ayrioddiy mantiqiy ishlash, shuningdek, testlar vaqti-vaqti bilan yoki tasodifiy muvaffaqiyatsiz bo'lishiga olib kelishi mumkin. Shu sababli, Spring Team quyidagi umumiy tavsiyalarni beradi, qaysi holatlarda testlarni parallel bajarmaslik kerak.
Agar testlar:
-
Spring Framework'da
@DirtiesContextannotatsiyasi qo'llab-quvvatlashidan foydalansangiz. -
Spring Boot'da
@MockBeanyoki@SpyBeanannotatsiyalaridan foydalanayotgan bo'lsangiz. -
JUnit 4 da
@FixMethodOrderannotatsiyasining qo'llab-quvvatlashidan foydalansangiz yoki test metodlarini ma'lum tartibda bajarilishini ta'minlash uchun mo'ljallangan test fraymvorqi funksiyasidan foydalansangiz. Ammo, bu holatlar to'liq test sinflari parallel bajarilganda tegishli emasligiga e'tibor bering. -
Umumiy xizmatlar yoki tizimlarning holatini o'zgartirish, masalan, ma'lumotlar bazasi, xabar vositachisi, fayl tizimi va boshqalar. Bu ichki va tashqi tizimlarga taalluqlidir.
Agar testlarning parallel bajarilishi natijasida ApplicationContext ushbu test uchun endi faol emasligi haqida istisno yuzaga kelsa, bu odatda ApplicationContext boshqa oqimda ContextCache dan olib tashlanganini bildiradi.
Bu @DirtiesContext annotatsiyasidan foydalanish yoki ContextCache dan avtomatik siqib chiqarish bilan bog'liq bo'lishi mumkin. Agar aybdor @DirtiesContext annotatsiyasi bo'lsa, yoki @DirtiesContext dan foydalanishni oldini olishning yo'lini topishingiz yoki bunday testlarni parallel bajarishdan chiqarib tashlashingiz kerak. Agar ContextCache ning maksimal hajmi oshib ketgan bo'lsa, keshning maksimal hajmini oshirish mumkin. Batafsil ma'lumotni kontekst keshirovka qismida qarang.
TestContext ning asosiy implementatsiyasi javadoc'da tavsiflangan nusxa olish konstruktorini taqdim etsa mumkin. Spring'da foydalaniladigan
DefaultTestContext shunday konstruktorni taqdim etadi. Ammo, agar siz
TestContext ning maxsus implementatsiyasini taqdim etadigan uchinchi tomon kutubxonasidan foydalansangiz, testlarni parallel bajarishga mos kelishini ta'minlashingiz kerak.
GO TO FULL VERSION