Anotasi SpringJUnitConfig dan SpringJUnitWebConfig pada Spring 5

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.