不知道大家做Junit测试时对于数据库的操作都是怎么进行验证的。我说下我们项目里遇到的一些问题。
1、对于查询功能的Dao函数
Dao返回值:返回List,如果查询到数据时,List里面包含多个JavaBean。JavaBean里的属性的格式包含基本类型、数组类型、List型、Map型、其他JavaBean。
正常的验证代码是:
List list = Dao.Search();
assertEquals(1, list.size());
XXXVO vo = list.get(index);
assertEquals("0001", vo.getNo());
assertEquals("Name", vo.getName());
问题:需要验证的JavaBean里的属性太多,太复杂。要写很多assert代码。数据写死在测试代码里了,更换一组测试数据时需要从新写Junit代码。
期望的解决方法:预期的数据通过一种格式保存在XML文件中,根据XML里的数据对返回的List进行验证。
例:assertObject("result_01.xml", list);
注:所有返回的JavaBean都没有实现Equals方法。所以不能整个对象比较。
2、更新和插入动作的Dao函数
正常的验证方式是:执行Dao的方法后,执行一段查询,将Dao插入的数据查询出来然后逐一验证。
问题:需要写的代码太多,不好维护。
期望的解决方法:将期望Dao执行后的数据表状态,预先写到一个XML文件中。Dao执行之后,根据XML文件的内容与数据库中表的内容进行比较。
新的问题:一些表中的字段(主要是主键)是通过数据库中的SEQUENCES对象的值插入的(自动增长字段),在Dao执行之前无法预期其值。因为是多人进行测试,
所以SEQUENCES对象是多人在使用,所以无法预期SEQUENCES的使用状态。 不知道我描述的是否清楚,请高手来帮忙提出一些解决方案。最好是有实现的方案。也可以说说你们做项目时的测试方法。谢谢!
1、对于查询功能的Dao函数
Dao返回值:返回List,如果查询到数据时,List里面包含多个JavaBean。JavaBean里的属性的格式包含基本类型、数组类型、List型、Map型、其他JavaBean。
正常的验证代码是:
List list = Dao.Search();
assertEquals(1, list.size());
XXXVO vo = list.get(index);
assertEquals("0001", vo.getNo());
assertEquals("Name", vo.getName());
问题:需要验证的JavaBean里的属性太多,太复杂。要写很多assert代码。数据写死在测试代码里了,更换一组测试数据时需要从新写Junit代码。
期望的解决方法:预期的数据通过一种格式保存在XML文件中,根据XML里的数据对返回的List进行验证。
例:assertObject("result_01.xml", list);
注:所有返回的JavaBean都没有实现Equals方法。所以不能整个对象比较。
2、更新和插入动作的Dao函数
正常的验证方式是:执行Dao的方法后,执行一段查询,将Dao插入的数据查询出来然后逐一验证。
问题:需要写的代码太多,不好维护。
期望的解决方法:将期望Dao执行后的数据表状态,预先写到一个XML文件中。Dao执行之后,根据XML文件的内容与数据库中表的内容进行比较。
新的问题:一些表中的字段(主要是主键)是通过数据库中的SEQUENCES对象的值插入的(自动增长字段),在Dao执行之前无法预期其值。因为是多人进行测试,
所以SEQUENCES对象是多人在使用,所以无法预期SEQUENCES的使用状态。 不知道我描述的是否清楚,请高手来帮忙提出一些解决方案。最好是有实现的方案。也可以说说你们做项目时的测试方法。谢谢!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货