天天看點

使用Spring+Junit4.4進行測試

<a target="_blank" href="http://nottiansyf.iteye.com/blog/345819">http://nottiansyf.iteye.com/blog/345819</a>

使用junit4.4測試 

在類上的配置annotation 

@runwith(springjunit4classrunner.class) 用于配置spring中測試的環境 

@contextconfiguration(locations={"classpath:spring/applicationcontext.xml","classpath:spring/spring-config-*.xml"})用于指定配置檔案所在的位置

@test标注在方法前,表示其是一個測試的方法 無需在其配置檔案中額外設定屬性. 

多個配置檔案時{"/applic","/asas"} 可以導入多個配置檔案 

web-inf/classes/spring/beanrefcontext.xml配置路徑:classpath:spring/beanrefcontext.xml

測試中的事務配置 , 

abstracttransactionaljunit38springcontexttests、 abstracttransactionaljunit4springcontexttests

abstracttransactionaltestngspringcontexttests 

已經在類級别預先配置了好了事物支援 

在普通spring的junit環境中配置事務 

在類之前加入注解 

@transactionconfiguration(transactionmanagert="txmgr",defaultrollback=false) 

@transactional 

在方法中主要使用的annotation包括 

@testexecutionlisteners({})---用于禁用預設的監聽器 否着需要通過@contextconfiguration配置一個applicationcontext;

@beforetransaction 

@before 

@rollback(true) 

@aftertransaction 

@nottransactional 

junit4.4下支援類,友善基于junit4.4的測試 

abstractjunit4springcontexttests: 

abstracttransactionaljunit4springcontexttests: 

需要在applicationcontext中定義一個datasource 

2009年3月9日 

目前spring2.5隻支援4.4的junit進行測試 

下面是一個簡單的測試demo 

package cn.com.bhgx.business.module.customerinfo.test;  

import javax.annotation.resource;  

import org.junit.test;  

import org.junit.runner.runwith;  

import org.springframework.test.context.contextconfiguration;  

import org.springframework.test.context.junit4.springjunit4classrunner;  

import org.springframework.test.context.transaction.transactionconfiguration;  

import org.springframework.transaction.annotation.transactional;  

import cn.com.bhgx.business.module.customerinfo.service.icustomerservice;  

@runwith(springjunit4classrunner.class)  

@contextconfiguration(locations={"classpath:spring/web-application-common.xml","classpath:spring/web-application-dao.xml","classpath:spring/web-application-service.xml"})  

@transactionconfiguration(transactionmanager="transactionmanager",defaultrollback=false)   

@transactional   

public class testallfunction {  

    @resource(name="customerservice")  

    private icustomerservice customerservice;  

    @test  

    public void getallcustomers() {  

        customerservice.getcustomerbyid("1241470");  

    }  

}