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上獲得。