spring junit 单元测试

在项目的整个生命周期,测试时一个必不可少的环节,有开发就有测试,以下是我在项目中使用SpringJunit做最常用的单元测试,junit还有很多功能,管理测试测试用例,生成测试报告等

加载spring与junit的相关jar 正常项目使用,现编写一个测试基类,然后要测试类继承这个基类

 

import org.junit.Before; import org.junit.runner.RunWith;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.mock.web.MockHttpServletResponse;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;
import org.springframework.transaction.annotation.Transactional;
@RunWith(SpringJUnit4ClassRunner.class)//指定单元测试的执行类,集成了spring的相关功能,不写默认Suite.class执行java类测试
@WebAppConfiguration @ContextConfiguration(locations = { "classpath*:/spring-mvc.xml", "classpath*:applicationContext*.xml"})//指定项目中的配置文件
@Transactional(transactionManager = "transactionManager")//测试时指定的事务
public class BaseJunitTest extends AbstractTransactionalJUnit4SpringContextTests { // 模拟request,response protected
MockHttpServletRequest request;
protected MockHttpServletResponse response;
@Before public void init() {
request = new MockHttpServletRequest();
request.setCharacterEncoding("UTF-8");
response = new MockHttpServletResponse(); } }

import org.junit.After; import org.junit.AfterClass;
import org.junit.Before; import org.junit.BeforeClass;
import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired;
import hello.config.RedisUtils;
public class RedisTest extends BaseJunitTest {
@Autowired private RedisUtils rdisUtils;
@BeforeClass
public static void beforClass(){
System.out.println("beforeClass");
}
@Before//用于初始化方法的初始值,当多个方法公用数据时
public void before(){
System.out.println("before");
}
@Test(timeout=1000,expected=Exception.class)//超时1000毫秒默认失败,没有抛出预期的异常也算失败
@Ignore("not reday yet") //忽略此测试方法,可作用类或者方法上
public void redisTest() throws Exception {
rdisUtils.set("123", "测试");
System.out.println("进入了方法");
String string= rdisUtils.get("123").toString();
System.out.println(string);
}
@After//输出方法的执行信息
public void after(){
System.out.println("after");
}
@AfterClass public static void afterClass(){
System.out.println("afterClass"); }
}


如果单元测试的方法有操作数据的,junit测试时默认事务回滚的,不会对数据的数据造成污染,
但可以在方法上添加注解@Rollback(value=false),事务就不会回滚,测试的数据就会存数据库,
可以利用这个作为一个方法的驱动,对错误数据的修改(慎用,毕竟junit最好的就是可以事务回滚)

 

 

 

转载于:https://my.oschina.net/u/3195939/blog/847382

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值