Spring Framework TestContext framework ilə əlaqəli olan modulyar və inteqrasiya testlərində istifadə edilə biləcək xüsusi annotasiya dəstini təqdim edir. Daha ətraflı məlumat üçün müvafiq javadoc-yə baxın, o cümlədən standart atribut dəyərləri, atribut ləqəbləri və digər məlumatlar.
Springdə test üçün aşağıdakı annotasiyalar mövcuddur:
@BootstrapWith
@BootstrapWith
– Spring TestContext Framework-in başlanğıcının konfiqurasiya üçün sinif səviyyəsində bir annotasiyadır. Xüsusilə, xüsusi TestContextBootstrapper
-i təyin etmək üçün @BootstrapWith
istifadə edilə bilər. Daha ətraflı məlumat üçün TestContext framework-un başlaması bölməsinə baxın.
@ContextConfiguration
@ContextConfiguration
inteqrasiya testləri üçün ApplicationContext
-in yüklənməsi və konfiqurasiyası ilə bağlı sinif səviyyəsində metadataları müəyyən edir. Xüsusilə, @ContextConfiguration tətbiq kontekstinin resurslarını və ya kontekstin yüklənməsi üçün istifadə olunan komponent classes
-ı elan edir.
Resurs yerləri adətən classpath-də yerləşən XML konfiqurasiya faylları və ya Groovy skriptlərindən ibarətdir, komponent siniflər isə adətən @Configuration
annotasiyası ilə qeyd olunmuş siniflərdir. Lakin resurs yerləri fayl sistemindəki fayl və skriptlərə də istinad edə bilər və komponent siniflər @Component
, @Service
və s. ilə annotasiya olunmuş siniflər ola bilər. Daha ətraflı məlumat üçün “Komponent sinifləri” bölməsinə baxın.
Aşağıdakı nümunədə XML faylına istinad edən @ContextConfiguration
annotasiyası göstərilir:
@ContextConfiguration("/test-config.xml")
class XmlApplicationContextTests {
// sinifin bədəni...
}
- XML faylına istinad edirik.
@ContextConfiguration("/test-config.xml")
class XmlApplicationContextTests {
// sinifin bədəni...
}
- XML faylına istinad edirik.
Aşağıdakı nümunədə isə sinifə istinad edən @ContextConfiguration
annotasiyası göstərilir:
@ContextConfiguration(classes = TestConfig.class)
class ConfigClassApplicationContextTests {
// sinifin bədəni...
}
- Sinifə istinad edirik.
@ContextConfiguration(classes = [TestConfig::class])
class ConfigClassApplicationContextTests {
// sinifin bədəni...
}
- Sinifə istinad edirik.
Bundan əlavə, resurs yerlərini və ya komponent siniflərini elan etməklə yanaşı, @ContextConfiguration
istifadə edə bilərsiniz, ApplicationContextInitializer
siniflərini də elan edə bilərsiniz. Aşağıda belə bir nümunə göstərilir:
@ContextConfiguration(initializers = CustomContextInitializer.class)
class ContextInitializerTests {
// sinifin bədəni...
}
- İnitializer sinifini elan edirik.
@ContextConfiguration(initializers = [CustomContextInitializer::class])
class ContextInitializerTests {
// sinifin bədəni...
}
- İnitializer sinifini elan edirik.
Həmçinin ContextLoader
strategiyasını elan etmək üçün @ContextConfiguration
istifadə edə bilərsiniz. Lakin, qeyd etmək lazımdır ki, çox vaxt yükleyicinin konfiqurasiyası tələb olunmur, çünki standart yükleyici initializers
və ya resurs yerlərini və ya komponent classes
-i dəstəkləyir.
Aşağıdakı nümunədə resurs yeri və özəl yükleyici birləşdirilmişdir:
@ContextConfiguration(locations = "/test-context.xml", loader = CustomContextLoader.class)
class CustomLoaderXmlApplicationContextTests {
// sinifin bədəni...
}
- Həm resurs yeri, həm də xüsusi yükleyici konfiqurasiya edirik.
@ContextConfiguration("/test-context.xml", loader = CustomContextLoader::class)
class CustomLoaderXmlApplicationContextTests {
// sinifin bədəni...
}
- Həm resurs yeri, həm də xüsusi yükleyici konfiqurasiya edirik.
@ContextConfiguration
resurs yerlərinin və ya konfiqurasiya siniflərinin, həmçinin valideyn və ya əhatə edən siniflər tərəfindən elan edilmiş kontekst initializer-larının irsiyyətini dəstəkləyir.
“Kontekstin idarə olunması”, nəfəsli test sinif konfiqurasiyası və @ContextConfiguration
annotasiyasının javadocs-ına baxın.
@WebAppConfiguration
@WebAppConfiguration
inteqrasiya testləri üçün WebApplicationContext
-in yüklənəcəyini elan etmək üçün istifadə edilən sinif səviyyəsində bir annotasiyadır. @WebAppConfiguration
annotasiyasının test sinifində olması, WebApplicationContext
-in test üçün "file:src/main/webapp"
kimi standart kök yolu ilə yüklənəcəyini təmin edir. Resurs əsas yolu test üçün WebApplicationContext
üçün MockServletContext
yaratmaq üçün "pərdə arxasında" istifadə olunur.
Aşağıdakı nümunə @WebAppConfiguration
annotasiyasının necə istifadə olunacağını göstərir:
@ContextConfiguration
@WebAppConfiguration
class WebAppTests {
// sinifin bədəni...
}
@WebAppConfiguration
annotasiyası.
@ContextConfiguration
@WebAppConfiguration
class WebAppTests {
// sinifin bədəni...
}
@WebAppConfiguration
annotasiyası.
Standart dəyərdən fərqli resurs əsas yolunu təyin etmək üçün value
atributundan istifadə edə bilərsiniz. Resurs prefix-ləri classpath:
və file:
dəstəklənir. Resurs prefix-i müəyyən edilməyibsə, yolun fayl sistemindəki resurs olduğu güman edilir. Aşağıdakı nümunə, classpath resursunun necə təyin olunacağını göstərir:
@ContextConfiguration
@WebAppConfiguration("classpath:test-web-resources")
class WebAppTests {
// sinifin bədəni...
}
- Classpath resursunu təyin edirik.
@ContextConfiguration
@WebAppConfiguration("classpath:test-web-resources")
class WebAppTests {
// sinifin бедения...
}
- Classpath resursunu təyin edirik.
Diqqət yetirin ki, @WebAppConfiguration
annotasiyası bir test sinifi daxilində @ContextConfiguration
annotasiyası ilə birlikdə və ya test siniflərinin iyerarxiyası daxilində istifadə edilməlidir. Daha ətraflı məlumat üçün @WebAppConfiguration
javadoc-una baxın.
@ContextHierarchy
@ContextHierarchy
inteqrasiya testləri üçün ApplicationContext
instansiyalarının iyerarxiyasını müəyyən etmək üçün istifadə edilən sinif səviyyəsində bir annotasiyadır. @ContextHierarchy
annotasiyası kontekst iyerarxiyasının hər səviyyəsini müəyyən edən biri və ya bir neçə @ContextConfiguration
annotasiyasını istifadə edərək elan edilməlidir. Aşağıdakı nümunələr @ContextHierarchy
annotasiyasının bir test sinifində necə istifadə olunacağını göstərir (test siniflərinin iyerarxiyası daxilində də istifadə edilə bilər):
@ContextHierarchy({
@ContextConfiguration("/parent-config.xml"),
@ContextConfiguration("/child-config.xml")
})
class ContextHierarchyTests {
// sinifin бения...
}
@ContextHierarchy(
ContextConfiguration("/parent-config.xml"),
ContextConfiguration("/child-config.xml"))
class ContextHierarchyTests {
// sinifin бения...
}
@WebAppConfiguration
@ContextHierarchy({
@ContextConfiguration(classes = AppConfig.class),
@ContextConfiguration(classes = WebConfig.class)
})
class WebIntegrationTests {
// sinifin бения...
}
@WebAppConfiguration
@ContextHierarchy(
ContextConfiguration(classes = [AppConfig::class]),
ContextConfiguration(classes = [WebConfig::class]))
class WebIntegrationTests {
// sinifin бения...
}
Əgər test siniflərinin iyerarxiyasında bir kontekst səviyyəsi üçün konfiqurasiyanı birləşdirmək və ya üstələmək lazımdırsa, bu səviyyəyə istənilən ad təyin etmək lazımdır və hər bir uyğun sinif səviyyəsində @ContextConfiguration
annotasiyası üçün name
atributuna eyni dəyər ötürmək lazımdır. Əlavə nümunələr üçün “Kontekst iyerarxiyaları” bölməsinə və @ContextHierarchy
javadoc-una baxın.
@ActiveProfiles
@ActiveProfiles
inteqrasiya testləri üçün ApplicationContext
yüklənərkən hansı bean təriflərinin aktiv profilərinin olacağını elan etmək üçün istifadə edilən sinif səviyyəsində bir annotasiyadır.
Aşağıdakı nümunə, dev
profilinin aktiv olması lazım olduğunu göstərir:
@ContextConfiguration
@ActiveProfiles("dev")
class DeveloperTests {
// sinifin бения...
}
- Profilin
dev
aktiv olması lazım olduğunu göstəririk.
@ContextConfiguration
@ActiveProfiles("dev")
class DeveloperTests {
// sinifin бения...
}
- Profilin
dev
aktiv olması lazım olduğunu göstəririk.
Aşağıdakı nümunə hər iki profilin - dev
və integration
- aktiv olmasını göstərir:
@ContextConfiguration
@ActiveProfiles({"dev", "integration"})
class DeveloperIntegrationTests {
// sinifin бения...
}
- Profilin
dev
vəintegration
aktiv olması lazım olduğunu göstəririk.
@ContextConfiguration
@ActiveProfiles(["dev", "integration"])
class DeveloperIntegrationTests {
// sinifin бения...
}
- Profilin
dev
vəintegration
aktiv olması lazım olduğunu göstəririk.
@ActiveProfiles
ilə bağlı olan siniflərin və əhatə edən siniflərin elan etdiyi aktiv bean təriflərinin profil irsiyyətini dəstəkləyir. Siz həmçinin aktiv bean təriflərinin profillərini proqram vasitəsi ilə həll edə bilərsiniz, çünki xüsusi bir
ActiveProfilesResolver
yazaraq və onu
@ActiveProfiles
annotasiyasının
resolver
atributu ilə qeyd edərək qeyd edə bilərsiniz.
“Mühit profilləri ilə kontekst konfiqurasiyası”, nəfəsli test sinif konfiqurasiyası və @ActiveProfiles
annotasiyası javadoc-una baxın.
GO TO FULL VERSION