锁定老帖子 主题:倒底该怎么写DAO的单元测试?
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (1)
|
|
---|---|
作者 | 正文 |
发表时间:2007-05-21
wuhua 写道 想怎么写就怎么写吧,
能做到没有软件没有bug就行 每个人的习惯不同,有些人喜欢mock,有的人喜欢准备一个简单的数据库(java内存数据库)有的人喜欢。。。。 而我比较喜欢真正的写到数据库里面 只要保证每人一个数据库就行 |
|
返回顶楼 | |
发表时间:2007-05-21
wuhua 写道 想怎么写就怎么写吧,
能做到没有软件没有bug就行 每个人的习惯不同,有些人喜欢mock,有的人喜欢准备一个简单的数据库(java内存数据库)有的人喜欢。。。。 而我比较喜欢真正的写到数据库里面 真的可能么。。。。 |
|
返回顶楼 | |
发表时间:2007-05-21
dbunit貌似有个问题,导致比较的难用,比如 有些实体 是自关联的,那么dbunit就无法在tearDown的时候删除数据,因为它无法发现依赖的方向
|
|
返回顶楼 | |
发表时间:2007-05-22
dengyin2000 写道 结合dbunit 和 spring的那个测试基类。 dbunit为你准备好数据。 数据是定义在xml文件中的
如果是多表的,或者有些数据库特性的! 比如sequence!!!这个就不好用了吧! |
|
返回顶楼 | |
发表时间:2007-05-22
xly_971223 写道 wuhua 写道 想怎么写就怎么写吧,
能做到没有软件没有bug就行 每个人的习惯不同,有些人喜欢mock,有的人喜欢准备一个简单的数据库(java内存数据库)有的人喜欢。。。。 而我比较喜欢真正的写到数据库里面 只要保证每人一个数据库就行 这个会产生问题的,你这次能测试通过的!下次就可能通不过了!!!不适合做自动批量测试 |
|
返回顶楼 | |
发表时间:2007-05-22
xly_971223 写道 困惑多一: 新增一个用户后,需要调用一个方法getUserInfo来判断数据是否已经插入!!! UserDao.createUser(user); assertNotNull(user.getId()); 这样就行了 为什么要用getUserInfo() 用要是用hibernate这样就可以了!!! 如果我插入一条数据,并没有返回id呢? |
|
返回顶楼 | |
发表时间:2007-05-22
klyuan 写道 xly_971223 写道 困惑多一: 新增一个用户后,需要调用一个方法getUserInfo来判断数据是否已经插入!!! UserDao.createUser(user); assertNotNull(user.getId()); 这样就行了 为什么要用getUserInfo() 用要是用hibernate这样就可以了!!! 如果我插入一条数据,并没有返回id呢? 如果没有返回值 测试起来可能要复杂了 只能通过计算总条数了 个人认为要测试Dao 必须每人一个数据库 这是前提 有了这个前提测试就方便了 因为数据库里有什么数据自己都知道 但是必须要保持数据库每次初始化时的数据都是一致的 |
|
返回顶楼 | |
发表时间:2007-05-22
不写!!
|
|
返回顶楼 | |
发表时间:2007-07-10
xly_971223 写道 klyuan 写道 xly_971223 写道 困惑多一: 新增一个用户后,需要调用一个方法getUserInfo来判断数据是否已经插入!!! UserDao.createUser(user); assertNotNull(user.getId()); 这样就行了 为什么要用getUserInfo() 用要是用hibernate这样就可以了!!! 如果我插入一条数据,并没有返回id呢? 如果没有返回值 测试起来可能要复杂了 只能通过计算总条数了 个人认为要测试Dao 必须每人一个数据库 这是前提 有了这个前提测试就方便了 因为数据库里有什么数据自己都知道 但是必须要保持数据库每次初始化时的数据都是一致的 如果每个人都自己的数据库,知道自己的需要的数据,那怎么做构建时的自动测试。 UserDao.createUser(user); assertNotNull(user.getId()); 用的是基于状态测试,当然需要对最终状态进行测试,所以getUserInfo()是有必要,如果说怕getUserInfo有问题,说明你需要考虑一下你的代码是否可测试 |
|
返回顶楼 | |
发表时间:2007-07-10
一个test方法测试整个dao的crud.
最好能有专门的测试数据库 没有的话, 就从create一条纪录开始,retrieve出来assert刚刚插入的数据, 再讲retrieve出的数据update到数据库。再retrieve出来assert刚刚update的数据,最后delete。在去retrieve,看看是不是0条。 这样保证了数据的完成性。 |
|
返回顶楼 | |