SpringMVC測試@Test

@RunWith(SpringJUnit4ClassRunner.class)  
@ContextConfiguration({"classpath*:applicationContext.xml"})  
public class SpringTestUser {  
    private static final Logger logger = LoggerFactory.getLogger(SpringTestUser.class);  

    @Resource  
    private UserDAO userDao;  

    @Test  
    public void testGetUserById() {  
        Integer userId = 1;  
        User user = userDao.getUserById(userId);  
        logger.info("用戶的名字是 : " + user.getName());  
    }  
}  

注意標籤@RunWith(SpringJUnit4ClassRunner.class)說的是我們這段代碼其實用的還是JUnit進行測試的
@ContextConfiguration({“classpath*:applicationContext.xml”})以標籤的形式完成對配置文件的加載

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 實例了

小結

如果您希望在 Spring 環境中進行單元測試,那麼可以做如下配置:
繼續使用 Junit4 測試框架,包括其 @Test 註釋標籤和相關的類和方法的定義,這些都不用變

  • 您需要通過 @RunWith(SpringJUnit4ClassRunner.class) 來啓動 Spring 對測試類的支持
  • 您需要通過 @ContextConfiguration 註釋標籤來指定 Spring 配置文件或者配置類的位置
  • 需要通過 @Transactional 來啓用自動的事務管理
  • 您可以使用 @Autowired 自動織入 Spring 的 bean 用來測試

另外您不再需要:

  • 手工加載 Spring 的配置文件
  • 手工清理數據庫的每次變更
  • 手工獲取 application context 然後獲取 bean 實例
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章