spring提供了一个做单元测试的方法。我最喜欢的是它的自动事务回滚功能。用起来很爽。
直接看代码
package com.ali.gongyi.model.account;
import junit.framework.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.annotation.Rollback;
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 com.ali.gongyi.dao.BaseDao;
/**
* @author zhenghui
* @version 1.0
* @data 2011-2-11 下午03:22:14
*
*/
@RunWith(SpringJUnit4ClassRunner.class) //指定测试用例的运行器 这里是指定了Junit4
@ContextConfiguration("classpath:applicationContext.xml")
@TransactionConfiguration(transactionManager="transactionManager", defaultRollback=true)
@Transactional
public class TestUserDao {
@Autowired
private BaseDao<User, Long> userDao = null;
@Test
@Rollback(true)//上面已经设置defaultRollback=true。这里其实可以不用写了
public void testModifyUser() {
User user = userDao.findById(2L);
System.out.println(user.getId());
user.setDisplayName("系统管理员4");
userDao.saveOrUpdate(user);
Assert.assertEquals(userDao.findById(2L).getDisplayName(), "系统管理员4");
}
}
说明
1 userDao的实现可以是hibernate,也可以是ibatis (这两个我都做了测试,这种方式都是没有问题的)。当然最主要看重的是自动回滚。
2 transactionManager需要自己配置。