1. Pengenalan
Dalam artikel ringkas ini, kita akan melihat anotasi @SpringJUnitConfig dan @SpringJUnitWebConfig baru yang tersedia pada Spring 5.
Anotasi ini adalah komposisi anotasi JUnit 5 dan Spring 5 yang menjadikan penciptaan ujian lebih mudah dan cepat.
2. @SpringJUnitConfig
@SpringJUnitConfig menggabungkan 2 anotasi ini:
- @ExtendWith (SpringExtension.class) dari JUnit 5 untuk menjalankan ujian dengankelas SpringExtension dan
- @ContextConfiguration dari Spring Testing untuk memuat konteks Spring
Mari buat ujian dan gunakan penjelasan ini dalam praktik:
@SpringJUnitConfig(SpringJUnitConfigIntegrationTest.Config.class) public class SpringJUnitConfigIntegrationTest { @Configuration static class Config {} }
Perhatikan bahawa, berbeza dengan @ContextConfiguration , kelas konfigurasi dinyatakan menggunakan atribut nilai . Walau bagaimanapun, lokasi sumber harus ditentukan dengan atribut lokasi .
Kita sekarang dapat mengesahkan bahawa konteks Spring benar-benar dimuat:
@Autowired private ApplicationContext applicationContext; @Test void givenAppContext_WhenInjected_ThenItShouldNotBeNull() { assertNotNull(applicationContext); }
Akhirnya, di sini kita mempunyai kod setara @SpringJUnitConfig (SpringJUnitConfigTest.Config.class):
@ExtendWith(SpringExtension.class) @ContextConfiguration(classes = SpringJUnitConfigTest.Config.class)
3. @SpringJUnitWebConfig
@SpringJUnitWebConfig menggabungkan anotasi yang sama dari @SpringJUnitConfig ditambah dengan @WebAppConfiguration from Spring testing - untuk memuatkan WebApplicationContext .
Mari lihat bagaimana penjelasan ini berfungsi:
@SpringJUnitWebConfig(SpringJUnitWebConfigIntegrationTest.Config.class) public class SpringJUnitWebConfigIntegrationTest { @Configuration static class Config { } }
Seperti @SpringJUnitConfig , kelas konfigurasi masuk dalam atribut nilai dan sumber daya apa pun ditentukan menggunakan atribut lokasi .
Juga, atribut nilai @WebAppConfiguration kini harus ditentukan menggunakan atribut resourcePath . Secara lalai, atribut ini ditetapkan ke "src / main / webapp" .
Sekarang mari kita sahkan bahawa WebApplicationContext benar-benar dimuat:
@Autowired private WebApplicationContext webAppContext; @Test void givenWebAppContext_WhenInjected_ThenItShouldNotBeNull() { assertNotNull(webAppContext); }
Sekali lagi, di sini kita mempunyai kod yang setara tanpa menggunakan @SpringJUnitWebConfig :
@ExtendWith(SpringExtension.class) @WebAppConfiguration @ContextConfiguration(classes = SpringJUnitWebConfigIntegrationTest.Config.class)
4. Kesimpulan
Secara ringkas tutorial ini, kita menunjukkan bagaimana untuk menggunakan yang baru diperkenalkan @SpringJUnitConfig dan @SpringJUnitWebConfig penjelasan dalam Spring 5.
Kod sumber lengkap untuk contoh boleh didapati di GitHub.