Spring 5中的SpringJUnitConfig和SpringJUnitWebConfig批註
1.簡介
在這篇快速文章中,我們將介紹Spring 5中提供的新@SpringJUnitConfig和@SpringJUnitWebConfig批註。
這些批註由JUnit 5和Spring 5批註組成,這些批註使測試創建更加容易和快捷。
2. @SpringJUnitConfig
@SpringJUnitConfig結合了這兩個註釋:
-   **JUnit 5中的@ExtendWith(SpringExtension.class)**使用SpringExtension類和
-   **Spring Testing的@ContextConfiguration**加載Spring上下文
讓我們創建一個測試並在實踐中使用此註釋:
@SpringJUnitConfig(SpringJUnitConfigIntegrationTest.Config.class)
 public class SpringJUnitConfigIntegrationTest {
 @Configuration
 static class Config {}
 }請注意,與@ContextConfiguration ,配置類是使用value屬性聲明的。但是,應使用locations屬性指定資源位置。
現在我們可以驗證Spring上下文是否已真正加載:
@Autowired
 private ApplicationContext applicationContext;
 @Test
 void givenAppContext_WhenInjected_ThenItShouldNotBeNull() {
 assertNotNull(applicationContext);
 }最後,這裡我們具有@SpringJUnitConfig(SpringJUnitConfigTest.Config.class):的等效代碼@SpringJUnitConfig(SpringJUnitConfigTest.Config.class):
@ExtendWith(SpringExtension.class)
 @ContextConfiguration(classes = SpringJUnitConfigTest.Config.class)3. @SpringJUnitWebConfig
@SpringJUnitWebConfig結合了相同的註解@SpringJUnitConfig加上@WebAppConfiguration從彈簧試驗-加載WebApplicationContext 。
讓我們看看這個註釋是如何工作的:
@SpringJUnitWebConfig(SpringJUnitWebConfigIntegrationTest.Config.class)
 public class SpringJUnitWebConfigIntegrationTest {
 @Configuration
 static class Config {
 }
 }與@SpringJUnitConfig一樣,配置類位於value屬性中,並且使用locations屬性指定任何資源。
另外,現在應該使用resourcePath屬性指定@WebAppConfiguration的value屬性。默認情況下,此屬性設置為“src/main/webapp” 。
現在,讓我們驗證WebApplicationContext已真正加載:
@Autowired
 private WebApplicationContext webAppContext;
 @Test
 void givenWebAppContext_WhenInjected_ThenItShouldNotBeNull() {
 assertNotNull(webAppContext);
 }同樣,這裡我們有等效的代碼,而沒有使用@SpringJUnitWebConfig :
@ExtendWith(SpringExtension.class)
 @WebAppConfiguration
 @ContextConfiguration(classes = SpringJUnitWebConfigIntegrationTest.Config.class)4。結論
在這個簡短的教程中,我們展示瞭如何在Spring 5中使用新引入的@SpringJUnitConfig和@SpringJUnitWebConfig批註。
示例的完整源代碼可在GitHub上獲得。