论坛首页 Java企业应用论坛

倒底该怎么写DAO的单元测试?

浏览 19415 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (1)
作者 正文
   发表时间:2007-05-17  
	public void testAddUserInfo() throws Exception{
		userInfo = new UserInfoDTO();
		userInfo.setUserId("001");
		userInfo.setUserName("张三");
		userInfoDao.addUserInfo(userInfo);
		this.assertNotNull(userInfoDao.getUserInfo(userInfo.getUserId()));
		this.assertEquals(userInfo.getUserId(), userInfoDao.getUserInfo(userInfo.getUserId()).getUserId());
		userInfoDao.removeUser(userInfo.getUserId());	}



为了避免脏数据!!!所以要把新插入的数据用removeUser删除掉!!!

当然,如果使用Spring的那个带有事务的基类。在TearDown时,会回滚所有事务。removeUser这个方法可以无需要。不会产生因单元测试的脏数据

困惑多一:
新增一个用户后,需要调用一个方法getUserInfo来判断数据是否已经插入!!!

根据单元测试的原则!!!
1.测试方法不应该有先后顺序!!
2.测试方法不应该依赖于另一个方法!
你上面的例子,我们需要测试的仅仅是addUserInfo这个方法!!
假设addUserInfo方法实际上是没有任何问题的,如果getUserInfo方法不正常。的确影响了这个测试结果!!!


大家平时是怎么写dao测试方法的?
   发表时间:2007-05-17  
把事务层的东西写在dao中合适么?

脏数据这东西应该不是dao应该关心的事吧。
0 请登录后投票
   发表时间:2007-05-17  
在setup里面来addUserInfo,准备一条数据

BTW:spring提供一个测试基类,可以自动回滚,防止测试数据污染数据库
0 请登录后投票
   发表时间:2007-05-17  
daquan198163 写道
在setup里面来addUserInfo,准备一条数据

BTW:spring提供一个测试基类,可以自动回滚,防止测试数据污染数据库

ROR中有不同的数据库,比如测试时用测试的数据库。
我们现在的测试也就是这样做的。
0 请登录后投票
   发表时间:2007-05-17  
抛出异常的爱 写道
把事务层的东西写在dao中合适么?

脏数据这东西应该不是dao应该关心的事吧。


我说的意思是,测试时写到数据库的数据应该在测试完后删除掉。
0 请登录后投票
   发表时间:2007-05-17  
daquan198163 写道
在setup里面来addUserInfo,准备一条数据

BTW:spring提供一个测试基类,可以自动回滚,防止测试数据污染数据库


我知道spring有这个基类!

我是说,各个测试方法之间有依赖
0 请登录后投票
   发表时间:2007-05-17  
hgq0011 写道
daquan198163 写道
在setup里面来addUserInfo,准备一条数据

BTW:spring提供一个测试基类,可以自动回滚,防止测试数据污染数据库

ROR中有不同的数据库,比如测试时用测试的数据库。
我们现在的测试也就是这样做的。


这个仍然不是最好的解决方法!!!
大家能不能把自己的测试代码都贴出来看看?
0 请登录后投票
   发表时间:2007-05-17  
哦,这个意思阿
可以用jdbcTemplate来准备数据和验证数据库状态
0 请登录后投票
   发表时间:2007-05-17  
还是没有人响应啊,呵呵
0 请登录后投票
   发表时间:2007-05-17  
java 代码
 
  1. public class XxxServiceTest extends AbstractTransactionalDataSourceSpringContextTests {  


准备数据:
java 代码
 
super.jdbcTemplate.execute("INSERT INTO GA_DEPARTMENT (fullName, shortName, status, id) " + "VALUES ('testDepart', 'testDepart', '4', '88888')");
测试:
java 代码
  1. Assert.assertEquals(.................  
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics