Junit單元測試Spring框架介面
Web專案整合Spring後,所有的介面,類都可以載入到ApplicationContext中。專案不用啟動也可以載入到記憶體中,並通過applicationContext獲取。
使用main方法測試,如下:
package testCase; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.xy.domain.CategoryDTO; import com.xy.service.ProductIndexService; public class MyTest { public static ApplicationContext applicationContext = new ClassPathXmlApplicationContext("application-context.xml"); public static void main(String[] args) throws Exception{ ProductIndexService productIndexService = (ProductIndexService)applicationContext.getBean("productIndexService"); CategoryDTO categoryDTO = new CategoryDTO(); categoryDTO.setCategoryName("測試類目"); categoryDTO.setCategoryLevel(1); categoryDTO.setCategoryDesc("main方法測試類目"); productIndexService.insertCategory(categoryDTO); } }
使用main方法有以下的不足:
1.不能使用@AutoWire自動注入獲取service,只能通過getBean()方式獲取。
2.呼叫增、刪、改以後,資料都會留在表裡,只能手動刪除表中資料。一般來說測試不需要表裡保留資料。
3.如果要測試的類裡面有多個方法,用main方法測試就很不方便。
使用Junit測試以後就可以解決以上的問題。
準備:
需要下載junit的jar包,引入專案內。(Junit4.8).
引入spring相關jar包(Spring-test)。
測試基類:
spring中提供了兩種支援Junit的父類。
AbstractTransactionalJUnit4SpringContextTests//需要spring配置事務 AbstractJUnit4SpringContextTests//不需要事務
<bean name="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
在測試類中需要加入@RunWith和@ContextConfiguration來自動載入Spring上下文資訊。
編寫測試基類:@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = "classpath:application-context.xml")
package base;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
/**
* Junit測試基類
* 繼承AbstractJUnit4SpringContextTests
* @author javaw
*
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:application-context.xml")
public class BaseTestCase extends AbstractJUnit4SpringContextTests{
}
package base;
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;
/**
* Junit測試基類
* 繼承AbstractTransactionalJUnit4SpringContextTests
* 可實現事務回滾
* @author javaw
*
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:application-context.xml")
public abstract class BaseTransactionTestCase extends AbstractTransactionalJUnit4SpringContextTests{
}
測試類:
可以使用@Autowired或者@Resource將serivce層注入。
package testCase;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import base.BaseTransactionTestCase;
import com.xy.domain.CategoryDTO;
import com.xy.service.ProductIndexService;
public class ProductIndexTestCase extends BaseTransactionTestCase{
@Autowired
public ProductIndexService productIndexService;
@Before
public void setUp() throws Exception {
}
@Test
public void testInsertCategory() throws Exception{
CategoryDTO categoryDTO = new CategoryDTO();
categoryDTO.setCategoryName("測試類目");
categoryDTO.setCategoryLevel(1);
categoryDTO.setCategoryDesc("Junit測試類目");
int i = productIndexService.insertCategory(categoryDTO);
Assert.assertEquals(1, i);
}
}
測試類分別繼承BaseTestCase和BaseTransactionTestCase,分別執行了insert方法以後,繼承BaseTestCase時,資料庫中增加了一條資料。
繼承BaseTranscationTestCase時,資料庫中並沒有插入資料。可見事務已經自動回退掉了。
相關推薦
Junit單元測試Spring框架介面
Web專案整合Spring後,所有的介面,類都可以載入到ApplicationContext中。專案不用啟動也可以載入到記憶體中,並通過applicationContext獲取。 使用main方法測試,如下: package testCase; import org.sp
spring框架_03 junit單元測試
單元測試不是頭一次聽說了,但只是聽說從來沒有用過。一個模組怎麼測試呢,是不是得專門為一單元寫一個測試程式,然後將測試單元程式碼拿過來測試? 我是這麼想的。學到spring框架這才知道單元測試原來是這麼回事兒。 下面以上一篇文章中set注入的第一個例項為測試物件。進
Spring Boot Junit單元測試
摘要: Junit這種老技術,現在又拿出來說,不為別的,某種程度上來說,更是為了要說明它在專案中的重要性。 憑本人的感覺和經驗來說,在專案中完全按標準都寫Junit用例覆蓋大部分業務程式碼的,應該不會超過一半。 剛好前段時間寫了一些關於SpringBoot的帖子,正好現在把Junit再拿
SSH框架JUnit單元測試遇到的Bug
問題描述 專案框架使用SpringMVC&Spring&MyBatis框架開發,在tomcat容器中執行正常,但是使用JUnit對DAO層進行單元測試出現BindingException,異常日誌: org.apache.ibatis.binding.BindingE
junit單元測試框架
一般我們寫程式碼總想對方法測試一下結果,就存在這些問題: 1.如果方法需要測試,都需要在main方法上呼叫 2.目前的結果都需要我們人工對比 所以就需要用到 junit 進行測試: 1·下載 junit 的jar包並匯入 2.在需要測試的方法上加 “@Test”,然後
Spring整合Spring MVC及Mybatis進行Junit單元測試
我們可以在不啟動服務的情況下,進行單元測試,以便提交出高質量的程式碼。本文以一個小例子,說明在Spring中如何進行單元測試。 一:測試Controller 1:在pom.xml檔案中引入相關依賴 <properties> <!-- 設定專案編碼編碼 --&
Spring 整合Junit單元測試
1、在pom增加junit和spring-test <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <v
Junit單元測試+aop+spring+執行緒池,在進行Junit測試時切面中執行緒池內呼叫的方法不執行
一、問題背景: 寫了一個切面,指向某service包下的所有類及方法,當該service包下方法被呼叫時切面執行,切面中用了執行緒池ExecutorService pool = Executors.newFixedThreadPool(5);執行緒池內呼叫了dao層的方法。 二、問題描述:單
Spring Boot---(11)SpringBoot使用Junit單元測試
摘要:本文詳細的記錄了SpringBoot如何結合Junit寫測試用例,如何執行,打包執行,忽略執行等操作,SpringBoot內建了Junit測試元件,使用很方便,不用再單獨引入其他測試元件。 演示環境: SpringBoot + mybatis 開發工具:IntelliJ IDEA
spring+junit4時用Junit單元測試遇到的bug:java.lang.ExceptionInInitializerError
一、詳細錯誤日誌: 二、具體描述: 由於第一次用spring+Junit4進行單元測試,對他們瞭解不夠深入,出現這個bug時真的是手忙腳亂的,各種百度,各種嘗試就是解決不了,網上好多方法都試了就是不行,現在想來不是網上的解決方法不行,而是我遇到的問題和他們不一樣啊。網上說j
Spring Mybatis jUnit 單元測試
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations={"classpath:springConfig/spring-db.xml"}) 單個檔案 @ContextCon
SpringTest框架JUnit單元測試用例獲取ApplicationContext例項的方法
JUnit單元測試用例中使用Spring框架,之前我的使用方式很直接。 /** * 用於需要用到Spring的測試用例基類 * * @author lihzh * @alia OneCoder * @blog http://www.
Spring對Controller、Service、Dao進行Junit單元測試總結
Spring對Controller、Service、Dao進行Junit單元測試總結 [email protected]事務控制,避免資料庫出現髒資料(若要提交到資料庫,先注掉) 2.hibernate配置檔案 <property name="defaultAutoComm
spring Junit單元測試 bean 無法注入的問題
本人菜鳥在學習ssh 過程 ,遇見問題 向各位大佬請教。進行單元測試 爆出下面提示: 貼出下面配置資訊: applicationContext.xml 實現service 介面類 實現dao介面類 單元測試 進過本菜鳥的各種錯嘗試,上面的配置檔案內容沒有錯誤,只是整合框架的過
Spring mvc 之Junit 單元測試 Controller中方法
Springmvc 之Junit 單元測試 1. 首先引入測試的jar包。 1.1因為我用的ide是eclipse,現只介紹eclipse中junit的使用。首先引用eclipse中自帶的junit, 方法: 右鍵專案—>proper
Spring 筆記 -01- JUnit 單元測試
Spring 筆記 -01- Junit 單元測試 本篇介紹單元測試,就是說一個專案不必完整就可以執行,之前有介紹的是在 Eclipse 中建立動態 web 專案,這裡先建立 Maven 專案,也是在實際專案中應用最多的。 單元測試步驟: 提示:先連上網 一、建立專案:
JUnit單元測試框架的使用
原文地址 http://www.open-open.com/lib/view/open1462177214142.html 我們寫單元測試,一般都會用到一個或多個單元測試框架,在這裡,我們介紹一下JUnit4這個測試框架。這是Java界用的最廣泛,也是最基礎的一個框架,其他
Java JUnit 單元測試框架。
JUnit是一個Java語言的單元測試框架。 Junit 測試也是程式設計師測試,即所謂的白盒測試 如使用eclipse 開發,不用新增jar包,eclipse內部已經集成了,我們只需要引入即可使用。 1.新增方法,【專案】上右擊,選擇Build Path ,進入 2 .
Spring配置事務,Junit單元測試報錯"Failed to load ApplicationContext"
問題: Junit單元測試程式碼如下: package cn.muke.spring.demo2; import javax.annotation.Resource; import org.junit.Test; import org.junit.runner.RunWith; imp
(27)Spring Boot Junit單元測試【從零開始學Spring Boot】
Junit這種老技術,現在又拿出來說,不為別的,某種程度上來說,更是為了要說明它在專案中的重要性。 那麼先簡單說一下為什麼要寫測試用例 1. 可以避免測試點的遺漏,為了更好的進行測試,可以提高測試效率 2. 可以自動測試,可以在專案打包前進行測試校驗 3. 可以及時發現因為