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屬性指定@WebAppConfigurationvalue屬性。默認情況下,此屬性設置為“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上獲得