使用 Spring 進行單元測試


一、使用spring中對Junit框架的整合功能

    除了junit4和spring的jar包,還需要spring-test.jar。引入如下依賴:

<dependency>  
    <groupId>org.springframework</groupId>  
    <artifactId>spring-test</artifactId>  
    <version>3.1.1.RELEASE</version>  
</dependency>
package service; 
 import static org.Junit.Assert.assertEquals; 

 import org.Junit.Test; 
 import org.Junit.runner.RunWith; 
 import org.Springframework.beans.factory.annotation.Autowired; 
 import org.Springframework.test.context.ContextConfiguration; 
 import org.Springframework.test.context.Junit4.SpringJUnit4ClassRunner; 
 import org.Springframework.transaction.annotation.Transactional; 

 import domain.Account; 

 @RunWith(SpringJUnit4ClassRunner.class) 
 @ContextConfiguration("/config/Spring-db1.xml") 
 @Transactional 
 public class AccountServiceTest1 { 
     @Autowired 
     private AccountService service; 
    
     @Test 
     public void testGetAcccountById() { 
 Account acct = Account.getAccount(1, "user01", 18, "M"); 
         service.insertIfNotExist(acct); 
         Account acct2 = service.getAccountById(1); 
         assertEquals(acct,acct2); 
     } 
 }

對這個類解釋一下:

  • @RunWith 注釋標簽是 Junit 提供的,用來說明此測試類的運行者,這里用了 SpringJUnit4ClassRunner,這個類是一個針對 Junit 運行環境的自定義擴展,用來標准化在 Spring 環境中 Junit4.5 的測試用例,例如支持的注釋標簽的標准化
  • @ContextConfiguration 注釋標簽是 Spring test context 提供的,用來指定 Spring 配置信息的來源,支持指定 XML 文件位置或者 Spring 配置類名,這里我們指定 classpath 下的 /config/Spring-db1.xml 為配置文件的位置
  • @Transactional 注釋標簽是表明此測試類的事務啟用,這樣所有的測試方案都會自動的 rollback,即您不用自己清除自己所做的任何對數據庫的變更了
  • @Autowired 體現了我們的測試類也是在 Spring 的容器中管理的,他可以獲取容器的 bean 的注入,您不用自己手工獲取要測試的 bean 實例了
  • testGetAccountById 是我們的測試用例:注意和上面的 AccountServiceOldTest 中相同的測試方法的對比,這里我們不用再 try-catch-finally 了,事務管理自動運行,當我們執行完成后,所有相關變更會被自動清除

 

參考:http://www.ibm.com/developerworks/cn/java/j-lo-springunitest/index.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM