Java Web(5) Spring 下使用Junit4 單元測試

1. 如何在不啓動Tomcat服務器的狀況下對,Dao這些不依賴使用Servlet API的類來進行單元測試呢?html

    其實在Spring框架體系中,已經有一套本身的測試代碼,其中就是依賴使用Junit來進行測試 ,不須要啓動Tomcat就能夠對Dao來進行測試。java

    至於什麼是Junit呢,參見Junitspring

2. 首先的第一步,就是添加依賴的類庫,這裏就須要再一次使用到神器Maven了,在pom.xml中添加api

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-test</artifactId>
    <version>4.2.2.RELEASE</version>
</dependency>
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.9</version>
    <scope>test</scope>
</dependency>

    在這裏,須要注意一下,spring版本與Junit版本的兼容問題。前面我使用Spring是4.2.2的,在官方的文檔中講到服務器

NOTE: As of Spring Framework 4.1, this class requires JUnit 4.9 or higher.app

    因此我使用了Junit 4.9 以上,不然運行JunitCase會拋異常框架

3. 編寫TestCase單元測試

package test;

import java.util.Iterator;
import java.util.List;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import cn.tian.dao.*;
import cn.tian.vo.*;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;
//首先指定Junit的Runner
@RunWith(SpringJUnit4ClassRunner.class)
//指明配置文件所在
@ContextConfiguration(locations="classpath:applicationContext.xml")
//指定事務管理器
@Transactional(transactionManager="transactionManager")
//繼承AbstractTransactionalJUnit4SpringContextTests來獲取Spring上下文環境來獲取Bean
public class UserDaoTest extends AbstractTransactionalJUnit4SpringContextTests{
 //spring依賴注入
	@Autowired
	private UserDao dao;
	//JUnit註解 ,代表這是一個須要運行的測試方法
	@Test
	public void test(){
		User admin = new User();
		admin.setName("管理員");		
		dao.insert(user);		
	}	
}

    就這樣簡單,就能夠輕鬆佈置JUnit的測試環境了測試

 

4. 補充:若是在Web項目中配置有bean 的scope爲「application」的時候,運行測試會顯示Spring Context初始化錯誤。須要在添加一個註解@WebAppConfiguration,把WebApplicationContext加載上來,就解決了ui

相關文章
相關標籤/搜索