上下文管理

每個 TestContext 為其負責的測試例項提供上下文管理和快取支援。測試例項不會自動獲得對配置的 ApplicationContext 的訪問許可權。但是,如果測試類實現 ApplicationContextAware 介面,則會將 ApplicationContext 的引用提供給測試例項。請注意,AbstractJUnit4SpringContextTestsAbstractTestNGSpringContextTests 都實現了 ApplicationContextAware,因此會自動提供對 ApplicationContext 的訪問。

@Autowired ApplicationContext

作為實現 ApplicationContextAware 介面的替代方案,您可以透過在欄位或 setter 方法上使用 @Autowired 註解來注入測試類的應用程式上下文,如下例所示:

  • Java

  • Kotlin

@SpringJUnitConfig
class MyTest {

	@Autowired (1)
	ApplicationContext applicationContext;

	// class body...
}
1 注入 ApplicationContext
@SpringJUnitConfig
class MyTest {

	@Autowired (1)
	lateinit var applicationContext: ApplicationContext

	// class body...
}
1 注入 ApplicationContext

同樣,如果您的測試配置為載入 WebApplicationContext,您可以將 Web 應用程式上下文注入到您的測試中,如下所示:

  • Java

  • Kotlin

@SpringJUnitWebConfig (1)
class MyWebAppTest {

	@Autowired (2)
	WebApplicationContext wac;

	// class body...
}
1 配置 WebApplicationContext
2 注入 WebApplicationContext
@SpringJUnitWebConfig (1)
class MyWebAppTest {

	@Autowired (2)
	lateinit var wac: WebApplicationContext
	// class body...
}
1 配置 WebApplicationContext
2 注入 WebApplicationContext

透過使用 @Autowired 進行依賴注入由 DependencyInjectionTestExecutionListener 提供,該監聽器預設已配置(請參閱 測試夾具的依賴注入)。

使用 TestContext 框架的測試類不需要擴充套件任何特定類或實現特定介面來配置其應用程式上下文。相反,透過在類級別宣告 @ContextConfiguration 註解來完成配置。如果您的測試類沒有顯式宣告應用程式上下文資源位置或元件類,則配置的 ContextLoader 會確定如何從預設位置或預設配置類載入上下文。除了上下文資源位置和元件類之外,應用程式上下文還可以透過應用程式上下文初始化器進行配置。

以下部分解釋瞭如何使用 Spring 的 @ContextConfiguration 註解透過 XML 配置檔案、Groovy 指令碼、元件類(通常是 @Configuration 類)或上下文初始化器來配置測試 ApplicationContext。另外,您也可以為高階用例實現和配置自己的自定義 SmartContextLoader

© . This site is unofficial and not affiliated with VMware.