Spring'da JUnit 4'dan foydalanish
Spring TestContext Framework JUnit 4 bilan to'liq integratsiyani maxsus bajaruvchi (runner) orqali taklif qiladi (JUnit 4.12 yoki yuqori versiyalarida qo'llab-quvvatlanadi). Test sinflarini @RunWith(SpringJUnit4ClassRunner.class) yoki qisqartirilgan variant @RunWith(SpringRunner.class) bilan belgilab, dasturchilar JUnit 4 asosidagi modul va integratsiya testlarini amalga oshirishi va bir vaqtning o'zida TestContext frameworkining ilovalar kontekstlarini yuklash, testlarda bog'liqlikni kiritish, transaksion test metodlarini bajarishni qo'llab-quvvatlash va hokazo afzalliklaridan foydalanishlari mumkin. Agar siz Spring TestContext Frameworkni boshqa bajaruvchi bilan (masalan, JUnit 4dan Parameterized bajaruvchisi) yoki uchinchi tomon bajaruvchilari bilan (masalan, MockitoJUnitRunner) ishlatmoqchi bo'lsangiz, Springning qo'llab-quvvatlovchi vositalarini JUnit qoidalariga moslashtirilgan holda ishlatishingiz mumkin.
Quyidagi kod parchasida Spring'da maxsus Runner yordamida sinovni bajarishi uchun minimal qo'llanmalar ko'rsatilgan:
@RunWith(SpringRunner.class)
@TestExecutionListeners({})
public class SimpleTest {
@Test
public void testMethod() {
// test logikasi...
}
}
@RunWith(SpringRunner::class)
@TestExecutionListeners
class SimpleTest {
@Test
fun testMethod() {
// test logikasi...
}
}
Oldingi namuna @TestExecutionListeners annotatsiyasi bo'sh ro'yxat bilan sozlangan, bu esa, @ContextConfiguration orqali ApplicationContextni konfiguratsiya qilishni talab qiluvchi standart tinglovchilarni o'chirib qo'yadi.
Spring JUnit 4 qoidalari
org.springframework.test.context.junit4.rules paketi quyidagi JUnit 4 qoidalarni taqdim etadi (JUnit 4.12 yoki yuqori versiyalarida qo'llab-quvvatlanadi):
-
SpringClassRule -
SpringMethodRule
SpringClassRule JUnit'dan TestRule bo'lib, Spring TestContext Framework funksiyalarini sinf darajasida qo'llab-quvvatlaydi, SpringMethodRule esa JUnit'dan MethodRule bo'lib, Spring TestContext Framework funksiyalarini namuna va metod darajasida qo'llab-quvvatlaydi.
SpringRunnerdan farqli ravishda, Spring'dagi qoidalarga asoslangan JUnit qo'llab-quvvatlovchi vositalarining afzalligi shundaki, u org.junit.runner.Runner ning har qanday amalga oshirilishidan mustaqil hisoblanadi va shu sababli mavjud alternativ bajaruvchilar (masalan, JUnit 4'dan Parameterized) yoki uchinchi tomon bajaruvchilari (masalan, MockitoJUnitRunner) bilan birlashtirilishi mumkin.
TestContext frameworkining barcha funksiyalarini qo'llab-quvvatlash uchun SpringClassRuleni SpringMethodRule bilan birlashtirish kerak. Quyidagi misolda ushbu qoidalarni integratsiya testida qanday e'lon qilishni ko'rsatadi:
// Maxsus Springdan bo'lmagan bajaruvchini @RunWith(...) orqali ixtiyoriy o'rnatish
@ContextConfiguration
public class IntegrationTest {
@ClassRule
public static final SpringClassRule springClassRule = new SpringClassRule();
@Rule
public final SpringMethodRule springMethodRule = new SpringMethodRule();
@Test
public void testMethod() {
// test logikasi...
}
}
// Maxsus Springdan bo'lmagan bajaruvchini @RunWith(...) orqali ixtiyoriy o'rnatish
@ContextConfiguration
class IntegrationTest {
@Rule
val springMethodRule = SpringMethodRule()
@Test
fun testMethod() {
// test logikasi...
}
companion object {
@ClassRule
val springClassRule = SpringClassRule()
}
}
JUnit 4 yordamchi sinflar
org.springframework.test.context.junit4 paketi JUnit 4 test holatlari uchun quyidagi yordamchi sinflarni taqdim etadi (JUnit 4.12 yoki yuqori versiyalarida qo'llab-quvvatlanadi):
-
AbstractJUnit4SpringContextTests -
AbstractTransactionalJUnit4SpringContextTests
AbstractJUnit4SpringContextTests bu abstrakt sinf bo'lib, Spring TestContext Frameworkni JUnit 4 muhitida ApplicationContext testi uchun aniq qo'llab-quvvatlaydi. Agar siz AbstractJUnit4SpringContextTestsni kengaytirsangiz, siz protected sinf o'zgaruvchi applicationContext orqali bemalol foydalanishingiz mumkin va bu konteks holatini test qilish yoki beanlarni izlash uchun ishlatilishi mumkin.
AbstractTransactionalJUnit4SpringContextTests – AbstractJUnit4SpringContextTestsning abstrakt kengaytmali transaksion sinfidir, bo'lib bu JDBCga kirishni optimallash va qulaylik keltiradi. Ushbu sinfda javax.sql.DataSource va PlatformTransactionManager binlari ApplicationContextda aniqlanishini kutadi. Agar siz AbstractTransactionalJUnit4SpringContextTestsni kengaytirsangiz, yuqorida keltirilgan jdbcTemplate orqali protected sinf o'zgaruvchi orqali SQL buyruqlarini bajarish va ma'lumotlar bazasini tekshirish uchun foydalanishingiz mumkin. Ushbu so'rovlar ma'lumotlar bazasi bilan bog'liq ilova kodini bajarishdan oldin va keyin ishlatilishi mumkin, va Spring ma'lum bir tranzaktsiya uchun ushbu so'rovlar bajarilishini ta'minlaydi. ORM vositasi bilan birgalikda foydalanilganda noto'g'ri pozitivlardan qochish tavsiya etiladi. "JDBC testini qo'llab-quvvatlash" bo'limida aytib o'tilganidek, AbstractTransactionalJUnit4SpringContextTests shuningdek JdbcTestUtilsga delegatsiya qilish uchun yordamchi metodlarni taqdim etadi va yuqorida aytib o'tilgan jdbcTemplate orqali executeSqlScript(..) SQL skriptlarini bajarish imkoniyatini beradi.
@RunWith(SpringRunner.class) yoki Spring uchun JUnit qoidalari yordamida sozlashingiz mumkin.
JUnit Jupiter uchun SpringExtension
Spring TestContext Framework test frameworki JUnit Jupiter bilan to'liq integratsiyani taklif qiladi, bu JUnit 5 da kiritilgan. Sinf testlarini @ExtendWith(SpringExtension.class) bilan belgilab, siz JUnit Jupiter asosidagi modul va integratsiya testlarini amalga oshirishingiz va bir vaqtning o'zida TestContext frameworkining afzalliklaridan foydalanishingiz mumkin, masalan, ilova kontekstlarini yuklashni qo'llab-quvvatlash, testlarda bog'liqlikni kiritish, transaksion test metodlarini qo'llab-quvvatlash va hokazo.
Bundan tashqari, JUnit Jupiter'dagi kengaytma API interfeysining boyligi tufayli, Spring quyidagi imkoniyatlarni taklif etadi, bu Spring tomonidan qo'llab-quvvatlanadigan JUnit 4 va TestNG funktsiyalar to'plamidan ustundir:
-
Test konstruktorlari, test metodlari va test hayotiy davri qayta chaqiruvchi metodlari uchun bog'liqlikni kiritish. Batalik ma'lumotni
SpringExtensionyordamida kiritish bo'limidan ko'rishingiz mumkin. -
Shartli testlar bajarilishini to'liq qo'llab-quvvatlash SpEL ifodalari, atrof-muhit o'zgaruvchilari, tizim xususiyatlari va hkz. asosida. Batalik ma'lumot va misollarni "Spring'ta test qilish uchun JUnit Jupiter annotatsiyalari" bo'limida
@EnabledIfva@DisabledIfannotatsiyalari haqida qo'shimcha ma'lumot oling. -
Spring va JUnit Jupiter'dan annotatsiyalarni birlashtirgan maxsus kompozitli annotatsiyalar.
@TransactionalDevTestConfigva@TransactionalIntegrationTestannotatsiyalar misollariga "Testlash uchun metaanotatsiyalarni qo'llab-quvvatlash" bo'limidan ko'proq ma'lumot oling.
Quyidagi kod parchasida SpringExtensionni @ContextConfiguration bilan birgalikda ishlatish uchun sinf testini qanday konfiguratsiya qilish ko'rsatilgan:
// JUnit Jupiterni Spring yordam vositalari bilan kengaytirishingizni buyuramiz.
@ExtendWith(SpringExtension.class)
// Springga TestConfig.class dan ApplicationContext yuklashini buyuramiz
@ContextConfiguration(classes = TestConfig.class)
class SimpleTests {
@Test
void testMethod() {
// test logikasi...
}
}
// JUnit Jupiterni Spring yordam vositalari bilan kengaytirishingizni buyuramiz.
@ExtendWith(SpringExtension::class)
// Springga TestConfig.class dan ApplicationContext yuklashini buyuramiz
@ContextConfiguration(classes = [TestConfig::class])
class SimpleTests {
@Test
fun testMethod() {
// test logikasi...
}
}
JUnit 5 hamda meta-annotatsiyalarni qo'llash mumkin bo'lganligi sababli, Spring ApplicationContextni osonroq konfiguratsiya qilish uchun @SpringJUnitConfig va @SpringJUnitWebConfig kompozit annotatsiyalarini taqdim etadi.
Quyidagi misolda @SpringJUnitConfig annotatsiyasi oldingi misolda ishlatilgan konfiguratsiyani qisqartirish uchun ishlatilgan:
// Springga SpringExtensionni JUnit'ta
// Jupiterda ro'yxatdan o'tkazishni va TestConfig.classdan ApplicationContext yuklashni buyuramiz
@SpringJUnitConfig(TestConfig.class)
class SimpleTests {
@Test
void testMethod() {
// test logikasi...
}
}
// Springga SpringExtensionni JUnit'ta
// Jupiterda ro'yxatdan o'tkazishni va TestConfig.classdan ApplicationContext yuklashni buyuramiz
@SpringJUnitConfig(TestConfig::class)
class SimpleTests {
@Test
fun testMethod() {
// test logikasi...
}
}
Xuddi shunday, quyidagi misolda @SpringJUnitWebConfig annotatsiyasi JUnit Jupiter bilan ishlatish uchun WebApplicationContext yaratish uchun ishlatilgan:
// Springga SpringExtensionni JUnit'ta
// Jupiterda ro'yxatdan o'tkazishni va TestWebConfig.classdan WebApplicationContext yuklashni buyuramiz
@SpringJUnitWebConfig(TestWebConfig.class)
class SimpleWebTests {
@Test
void testMethod() {
// test logikasi...
}
}
// Springga SpringExtensionni JUnit'ta
// Jupiterda ro'yxatdan o'tkazishni va TestWebConfig.classdan WebApplicationContext yuklashni buyuramiz
@SpringJUnitWebConfig(TestWebConfig::class)
class SimpleWebTests {
@Test
fun testMethod() {
// test logikasi...
}
}
@SpringJUnitConfig va @SpringJUnitWebConfig haqida qo'shimcha ma'lumotlar uchun "Spring'ta testlash uchun JUnit Jupiter annotatsiyalari" bo'limiga qarang.
SpringExtension yordamida bog'liqlikni kiritish
SpringExtension JUnit Jupiter'dan ParameterResolver kengaytma API interfeysini amalga oshiradi, bu Springga test konstruktorlari, test metodlari va test hayotiy davri qayta chaqiruvchi metodlariga bog'liqlikni kiritish imkonini beradi.
Xususan, SpringExtension testning ApplicationContextdan test konstruktori va @BeforeAll, @AfterAll, @BeforeEach, @AfterEach, @Test, @RepeatedTest, @ParameterizedTest va boshqa annotatsiyalar bilan belgilangan metodlarga bog'liqlikni kiritishi mumkin.
Konstruktor orqali bog'liqlikni kiritish
Agar JUnit Jupiter'dagi test sinfining konstruktori ma'lum bir parametrga ega bo'lsa va bu parametr turi ApplicationContext (yoki uning ost turi) bo'lsa yoki @Autowired, @Qualifier yoki @Value bilan annotatsiya qilingan yoki meta-annotatsiya qilingan bo'lsa, Spring ushbu parametrni ApplicationContextdan mos keladigan bean yoki qiymatni ishlatib kiritadi.
Spring, shuningdek, test sinfining avtomatik bog'liqlikni aniqlovchi va bog'laydigan barcha konstruktur parametrlarini avtomatik ravishda aniqlash va bog'lash uchun sozlanishi mumkin, agar konstruktor avto bog'lanadigan deb hisoblangan bo'lsa. Konstruktor quyidagi shartlardan biri (usto'zlik tizimida) mavjud bo'lsa avtomatik bog'lanadigan deb hisoblanadi.
-
Konstruktor
@Autowiredbilan annotatsiya qilingan. -
@TestConstructorannotatsiyasi yoki meta-annotatsiyasi test sinfida mavjud bo'lib,autowireModeatributALLga o'rnatilgan. -
Test konstruktori avtomatik aniqlash va bog'lash rejimini sukut bo'yicha
ALLga o'zgartirilgan.
@TestConstructor annotatsiyasidan foydalanish haqida va global test konstruktori avtomatik aniqlash va bog'lash rejimini qanday o'zgartirish haqida batafsil ma'lumotni @TestConstructor bo'limidan oling.
ParameterResolver bu konstruktur uchun parametrlarga ruxsat bera olmaydi.
Konstruktor orqali bog'liqlikni kiritishda @TestInstance(PER_CLASS) annotatsiyasi bilan mos keladigan JUnit Jupiter annotatsiyalaridan foydalangan holda, agar test ApplicationContextni test metodlaridan oldin yoki keyin yopish uchun @DirtiesContext annotatsiyasi ishlatilsa, foydalanish mumkin emas.
Sabab shundaki, @TestInstance(PER_CLASS) annotatsiyasi JUnit Jupiterga test metodini chaqiruvlar o'rtasida test misolini keshlashni buyuradi. Shunday qilib, test misoli ilgari ApplicationContextdan kiritilgan beanlar bilan bog'lanadi, bu esa yopilgan kontekstga obuna bo'lib qoladi. Bunday stsenariylarda test sinfining konstrukturini faqat bir marta chaqirish mumkin bo'lganligi sababli, bog'liqlikni kiritish takrorlanmaydi va keyingi testlar yopilgan ApplicationContextdan beanlar bilan o'zaro ta'sir qilishi mumkin, bu esa xatolarga olib kelishi mumkin.
@DirtiesContext annotatsiyasidan "test metodi oldidan" yoki "test metodi keyin" rejimida va @TestInstance(PER_CLASS) annotatsiyasi bilan birgalikda foydalanish uchun Springdan bog'liqliklarni ulardan foydalanishni seans orqali yoki setr orqali olish uchun sozlash kerak, shunda ular test metodi chaqirishlar o'rtasida takroran kiritilishi mumkin.
Quyidagi misolda Spring OrderServiceni ApplicationContextdan, TestConfig.classdan yuklangan holda, OrderServiceIntegrationTests konstrukturiga kiritadi.
@SpringJUnitConfig(TestConfig.class)
class OrderServiceIntegrationTests {
private final OrderService orderService;
@Autowired
OrderServiceIntegrationTests(OrderService orderService) {
this.orderService = orderService;
}
// kiritilgan OrderServicega asoslangan testlar
}
@SpringJUnitConfig(TestConfig::class)
class OrderServiceIntegrationTests @Autowired constructor(private val orderService: OrderService){
// kiritilgan OrderServicega asoslangan testlar
}
Ushbu funksiyadan foydalanish test bog'liqliklarini final bo'lib, shuning bilan o'zgarmas bo'lishini ta'minlaydi.
Agar spring.test.constructor.autowire.mode xususiyati all qiymatini oladigan bo'lsa (qarang @TestConstructor), oldingi misoldagi konstruktur uchun @Autowired annotatsiyasini e'lon qilishni o'tkazib yuborishingiz mumkin, bu quyidagicha natijani beradi.
@SpringJUnitConfig(TestConfig.class)
class OrderServiceIntegrationTests {
private final OrderService orderService;
OrderServiceIntegrationTests(OrderService orderService) {
this.orderService = orderService;
}
// kiritilgan OrderServicega asoslangan testlar
}
@SpringJUnitConfig(TestConfig::class)
class OrderServiceIntegrationTests(val orderService:OrderService) {
// kiritilgan OrderServicega asoslangan testlar
}
Metod orqali bog'liqlikni kiritish
Agar JUnit Jupiter'dagi test metodining parametri yoki test hayotiy davri qayta chaqiruvchi metodining parametri turi ApplicationContext (yoki uning ost turi) bo'lsa yoki @Autowired, @Qualifier yoki @Value bilan annotatsiya qilingan yoki meta-annotatsiya qilingan bo'lsa, Spring ushbu parametr uchun ApplicationContextdan mos keladigan bean yoki qiymatdan foydalanib bog'liqlikni kiritadi.
Quyidagi misolda Spring OrderServiceni ApplicationContextdan, TestConfig.classdan yuklangan holda, deleteOrder() test metodiga kiritadi:
@SpringJUnitConfig(TestConfig.class)
class OrderServiceIntegrationTests {
@Test
void deleteOrder(@Autowired OrderService orderService) {
// testning ApplicationContextdan orderService'dan foydalanamiz
}
}
@SpringJUnitConfig(TestConfig::class)
class OrderServiceIntegrationTests {
@Test
fun deleteOrder(@Autowired orderService: OrderService) {
// testning ApplicationContextdan orderService'dan foydalanamiz
}
}
JUnit Jupiter'dagi ParameterResolver ning kuchli qo'llab-quvvatlashi tufayli, Springga va JUnit Jupiter yoki boshqa uchinchi tomon kengaytmalari bilan birgalikda bir nechta bog'liqlikni bir vaqtning o'zida metoqa kiritish mumkin.
Quyidagi misolda Spring va JUnit Jupiter bir vaqtning o'zida test metodiga placeOrderRepeatedly() bog'liqlarini kiritish mumkinligini ko'rsatadi.
@SpringJUnitConfig(TestConfig.class)
class OrderServiceIntegrationTests {
@RepeatedTest(10)
void placeOrderRepeatedly(RepetitionInfo repetitionInfo,
@Autowired OrderService orderService) {
// testning ApplicationContextdan orderService'dan foydalanamiz
// va JUnit Jupiternin repetitionInfo
}
}
@SpringJUnitConfig(TestConfig::class)
class OrderServiceIntegrationTests {
@RepeatedTest(10)
fun placeOrderRepeatedly(repetitionInfo:RepetitionInfo, @Autowired orderService:OrderService) {
// testning ApplicationContextdan orderService'dan foydalanamiz
// va JUnit Jupiternin repetitionInfo
}
}
Quyidagi misolda @RepeatedTest annotatsiyasidan foydalanish JUnit Jupiterga RepetitionInfo ga kirishni imkoniyat beradi.
Kiritilgan test sinfi konfiguratsiyasi @Nested annotatsiyasi bilan
Spring TestContext Framework 5.0 versiyasidan boshlab JUnit Jupiter'dagi @Nested annotatsiya bo'lgan test sinflari uchun maxsus test annotatsiyalarini qo'llab-quvvatlaydi; ammo, Spring Framework 5.3 oldinidagi test sinfi konfiguratsiyalari kiritilgan sinflaridan sinf superklasslaridan meros olinmagan.
Spring Framework 5.3 dan boshlab, kiritilgan sinflardan meros qilinadigan test sinfi konfiguratsiyasini to'liq qo'llab-quvvatlash tatbiq etildi va bu konfiguratsiya odatda meros qilib olinadi. INHERIT odatiy rejimini OVERRIDE rejimiga o'zgartirish uchun @Nested annotatsiya bo'lgan alohida test sinflarini @NestedTestConfiguration(EnclosingConfiguration.OVERRIDE) bilan belgilashingiz mumkin. @NestedTestConfiguration ni aniq e'lon qilish annotatsiyalangan test sinfiga va uning barcha sinflari va kiritilgan sinfiga qo'llaniladi. Shunday qilib, yuqori darajali test sinfini @NestedTestConfiguration annotatsiyasi bilan belgilashingiz mumkin va bu barcha kiritilgan test sinflari uchun rekursiv ravishda qo'llaniladi.
Dasturchi jamoalari 5.3 versiyasidan oldingi Spring Framework versiyalari bilan mos keladigan OVERRIDEni sukut bo'yicha o'zgartirishlari uchun, sukut bo'yicha rejimni JVM tizim xususiyati yoki spring.properties faylini o'zgartirish orqali global tarzda o'zgartirish mumkin. Batafsil ma'lumot "Noto'g'ri musbatlar uchun kontekst rejimini o'zgartirish" bo'limiga qarang>.
Garchi quyidagi "Hello World" misoli juda soddalashtirilgan bo'lsa ham, u yuqori darajali sinf uchun konfiguratsiyani qanday e'lon qilishni va bu kiritilgan test sinflariga meros bo'lishini ko'rsatadi. Ushbu misolda faqat TestConfig konfiguratsiya sinfini meros qilib olinadi. Har bir kiritilgan test sinfi o'z faol profil to'plamini taqdim etadi, buning natijasida har bir kiritilgan test sinfi uchun alohida ApplicationContext yaratiladi (batafsil ma'lumot "Kontekstni keshlash" bo'limiga qarang). Mavjud bo'lgan qo'llab-quvvatlanadigan annotatsiyalar ning ro'yxati bilan tanishing, kiritilgan @Nested annotatsiyalari uchun qaysi annotatsiyalar meros qilib olinishi mumkinligini bilib oling.
@SpringJUnitConfig(TestConfig.class)
class GreetingServiceTests {
@Nested
@ActiveProfiles("lang_en")
class EnglishGreetings {
@Test
void hello(@Autowired GreetingService service) {
assertThat(service.greetWorld()).isEqualTo("Hello World");
}
}
@Nested
@ActiveProfiles("lang_de")
class GermanGreetings {
@Test
void hello(@Autowired GreetingService service) {
assertThat(service.greetWorld()).isEqualTo("Hallo Welt");
}
}
}
@SpringJUnitConfig(TestConfig::class)
class GreetingServiceTests {
@Nested
@ActiveProfiles("lang_en")
inner class EnglishGreetings {
@Test
fun hello(@Autowired service:GreetingService) {
assertThat(service.greetWorld()).isEqualTo("Hello World")
}
}
@Nested
@ActiveProfiles("lang_de")
inner class GermanGreetings {
@Test
fun hello(@Autowired service:GreetingService) {
assertThat(service.greetWorld()).isEqualTo("Hallo Welt")
}
}
}
TestNG yordamchi sinflari
org.springframework.test.context.testng paketi TestNG asosidagi test holatlari uchun quyidagi yordamchi sinflarni taqdim etadi:
-
AbstractTestNGSpringContextTests -
AbstractTransactionalTestNGSpringContextTests
AbstractTestNGSpringContextTests bu ApplicationContext testi uchun Spring TestContext Frameworkni TestNG muhitiga aniq qo'llab-quvvatlaydigan abstrakt sinfidir. Agar siz AbstractTestNGSpringContextTestsni kengaytirsangiz, siz protected sinf o'zgaruvchi applicationContext orqali bemalol foydalanishingiz mumkin va bu konteks holatini test qilish yoki beanlarni izlash uchun ishlatilishi mumkin.
AbstractTransactionalTestNGSpringContextTests – AbstractTestNGSpringContextTestsning abstrakt kengaytmali transaksion sinfidir, bo'lib bu JDBCga kirishni optimallash va qulaylik keltiradi. Ushbu sinfda javax.sql.DataSource va PlatformTransactionManager binlari ApplicationContextda aniqlanishini kutadi. Agar siz AbstractTransactionalTestNGSpringContextTestsni kengaytirsangiz, yuqorida keltirilgan jdbcTemplate orqali protected sinf o'zgaruvchi orqali SQL buyruqlarini bajarish va ma'lumotlar bazasini tekshirish uchun foydalanishingiz mumkin. Ushbu so'rovlar ma'lumotlar bazasi bilan bog'liq ilova kodini bajarishdan oldin va keyin ishlatilishi mumkin, va Spring ma'lum bir tranzaktsiya uchun ushbu so'rovlar bajarilishini ta'minlaydi. ORM vositasi bilan birgalikda foydalanilganda noto'g'ri pozitivlardan qochish tavsiya etiladi. "JDBC testini qo'llab-quvvatlash" bo'limida aytib o'tilganidek, AbstractTransactionalTestNGSpringContextTests shuningdek JdbcTestUtilsga delegatsiya qilish uchun yordamchi metodlarni taqdim etadi va yuqorida aytib o'tilgan jdbcTemplate orqali executeSqlScript(..) SQL skriptlarini bajarish imkoniyatini beradi.
@ContextConfiguration,
@TestExecutionListeners va hokazo annotatsiyalardan foydalanib, maxsus test sinflarini sozlashingiz va
TestContextManager dan foydalanib, sinf testini qo'lda instrumentatsiya qilishingiz mumkin. Siz
AbstractTestNGSpringContextTestsning manba kodiga qarab, sinf testini qanday instrumentatsiya qilishni o'rganishingiz mumkin.
GO TO FULL VERSION