spring JUnit 基本原理

Coding-lover發表於2016-01-29

Spring test framework 主要位於 org.Springframework.test.context 包中,主要包括下面幾個類:

  • TestContextManager:主要的入口類,提供 TestContext 例項的管理,負責根據各種事件來通知測試監聽器
  • TestContext:實體類,提供訪問 Spring applicatoin context 的能力,並負責快取applicationContext
  • TestExecutionListener:測試監聽器,提供依賴注入、applicationContext 快取和事務管理等能力
  • ContextLoader:負責根據配置載入 Spring 的 bean 定義,以構建 applicationContext 例項物件
  • SmartContextLoader:Spring 3.1 引入的新載入方法,支援按照 profile 載入

Spring 通過 AOP hook 了測試類的例項建立、beforeClass、before、after、afterClass 等事件入口,執行順序主要如下:

  • 測試執行者開始執行測試類,這個時候 Spring 獲取訊息,自動建立 TestContextManager 例項
  • TestContextManager 會建立 TestContext,以記錄當前測試的上下文資訊,TestContext 則通過ContextLoader 來獲取 Spring ApplicationContext 例項
  • 當測試執行者開始執行測試類的 BeforeClass、Before、After、AfterClass
    的時候,TestContextManager 將截獲事件,發通知給對應的 TestExecutionListener

轉載自:使用 Spring 進行單元測試

相關文章