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


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

    其實在Spring框架體系中,已經有一套自己的測試代碼,其中就是依賴使用Junit來進行測試 ,不需要啟動Tomcat就可以對Dao來進行測試。

    至於什么是Junit呢,參見Junit

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

<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.

    所以我使用了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加載上來,就解決了

原文:https://my.oschina.net/asd1614/blog/530528


免責聲明!

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



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