JUnit测试Hibernate.docx
- 文档编号:7249959
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:14
- 大小:1.10MB
JUnit测试Hibernate.docx
《JUnit测试Hibernate.docx》由会员分享,可在线阅读,更多相关《JUnit测试Hibernate.docx(14页珍藏版)》请在冰豆网上搜索。
JUnit测试Hibernate
第九章对基于Hibernate的DAO单元测试
1.1对基于Hibernate框架技术的DAO组件单元测试
1.1.1DAO组件单元测试的测试要点
1、对基于Hibernate框架技术的DAO组件的单元测试的内容
对基于Hibernate框架技术的DAO组件的单元测试的内容,主要涉及如下两个方面的测试。
(1)对其hibernate.cfg.xml文件以及各个O/RMapping(对象/关系映射)的各种*.xml文件的测试
(2)对基于Hibernate框架技术的DAO组件中的各个数据访问功能(CRUD)的方法进行测试。
2、测试要点
在测试用例类中利用Configuration类中的configure()方法来定位被测试系统的hibernate.cfg.xml文件,从而获得SessionFactory,最后获得Session。
3、对各个*.xml文件进行测试的测试用例的基本模板程序
下面的【例9-4】所示为对基于Hibernate框架技术的DAO组件的各个*.xml文件进行测试的测试用例的基本模板程序。
【例9-4】测试用例的基本模板程序示例,并请注意其中的黑体部分的代码。
packagecom.px1987.junit.test;
importjunit.framework.TestCase;
importjava.io.*;
importorg.hibernate.cfg.*;
importorg.hibernate.*;
publicclassTestHibernateXMLextendsTestCase{
protectedvoidsetUp()throwsException{}protectedvoidtearDown()throwsException{}super.tearDown();super.setUp();
publicvoidtestHibernateXML(){
SessionFactorysessionFactory=null;SessiononeSession=null;StringhibernateXMLFile=
"D:
\\HibernateExmp\\EclipseJ2SEApp\\hibernate.cfg.xml";//根据实际改变
FilexmlFile=newFile(hibernateXMLFile);Configurationconfig=newConfiguration().configure(xmlFile);sessionFactory=config.buildSessionFactory();
this.assertNotNull(sessionFactory);
oneSession=sessionFactory.openSession();
this.assertNotNull(oneSession);
}
}
1.1.2DAO组件单元测试的测试示例
为了使读者对如何利用JUnit单元测试框架对基于Hibernate框架的DAO组件的单元测试有所掌握,下面给出一个针对本书的第一章中的【例1-19】所示的HibernateDAOBean组件类,在Eclipse中开发工具中实现对其单元测试的实现过程。
1、在Eclipse中添加一个Java项目,名称为TestJ2SEApp
选择【文件】菜单,再选择【新建】菜单项,将出现下面的图9.5所示的对话框。
在项目名称的输入框中输入项目名称为TestJ2SEApp。
图9.5新建一个名称为TestJ2SEApp的测试项目的对话框
2、将应用项目引入到本测试项目中
由于在单元测试中一般希望将测试项目(也就是测试用例类所在的Java项目)应该与被测试项目(也就是应用项目,本例为在图1.10中所新建的EclipseJ2SEApp项目)相互分离,这样不会对被测试项目产生垃圾代码和添加与应用系统本身无关的系统包文件。
右击测试项目,在弹出的菜单中选择【属性】菜单项,将进入下面的图9.6所示的对话框。
在对话框的“项目”标签页中选择“添加”按钮以添加被测试的项目,详细过程请见下面的图9.6所示。
图9.6将应用项目(被测试项目)引入到测试项目中的对话框
3、在本测试项目中添加JUnit的系统*.jar包文件
为了能够在测试项目中应用JUnit进行测试用例的编程,需要在本测试项目中引入JUnit的系统*.jar包文件。
右击测试项目,在弹出的菜单中选择【属性】菜单项,将进入下面的图9.7所示的对话框。
在对话框的“库”标签页中选择“添加外部JAR(X)”按钮以添加JUnit的系统*.jar包文件,详细过程请见下面的图9.7所示。
图9.7在本测试项目中添加JUnit的系统*.jar包文件的对话框
4、在本测试项目中添加Hibernate的各个系统包文件
由于在测试用例中需要应用Hibernate的API,因此也需要将Hibernate的各个系统包文件添加到本测试项目中。
具体的方法与在图1.12中所示的过程相同,同时要注意的是,Hibernate所需要的10个必须*.jar包的文件分别为antlr-2.7.5H3.jar、cglib-2.1.2.jar、asm.jar、commons-collections-2.1.1.jar、commons-logging1.0.4.jar、ehcache-1.1.jar、hibernate3.jar、jta.jar、dom4j-1.6.1.jar和log4j-1.2.11.jar。
这些文件都放在Hibernate的系统包的lib目录中,最后的结果请参考下面的图9.8所示。
图9.8在本测试项目中添加Hibernate的各个系统包文件的对话框
5、添加针对应用项目中的各个*.xml文件进行测试的测试用例(TestCase)类
(1)添加测试用例类
右击测试项目,在弹出的菜单中选择【JUnit测试用例】菜单项,请参考下面的图9.9所示的菜单项目。
图9.9添加测试用例类的菜单项
在下面的图9.10所示的对话框中的类名称输入框中输入类名称为TestHibernateXML,包名称为com.px1987.hexample.test,基类选择为junit.framework.TestCase。
请参考图9.10所示。
图9.10添加TestHibernateXML测试用例类的对话框
(2)最后Eclipse将自动产生出下面的图9.11所示的代码内容
图9.11Eclipse自动产生出的测试用例代码内容
(3)编程该TestCase类
【例9-5】TestHibernateXML测试用例类的代码示例
packagecom.px1987.hexample.test;
importjunit.framework.TestCase;
importjava.io.*;
importorg.hibernate.cfg.*;
importorg.hibernate.*;
publicclassTestHibernateXMLextendsTestCase{
protectedvoidsetUp()throwsException{
}super.setUp();
protectedvoidtearDown()throwsException{
}
publicvoidtestHibernateXML(){
SessionFactorysessionFactory=null;super.tearDown();SessiononeSession=null;
StringhibernateXMLFile=
"D:
\\HibernateExmp\\EclipseJ2SEApp\\hibernate.cfg.xml";//根据实际改变
FilexmlFile=newFile(hibernateXMLFile);Configurationconfig=newConfiguration().configure(xmlFile);sessionFactory=config.buildSessionFactory();this.assertNotNull(sessionFactory);
oneSession=sessionFactory.openSession();
this.assertNotNull(oneSession);
}
}
6、执行该TestHibernateXML测试用例类
(1)启动测试用例类
右击测试用例TestHibernateXML类,在弹出的菜单中选择【运行方式】菜单项,然后再选择【JUnit测试】菜单项。
请参考下面的图9.12所示。
图9.12执行TestHibernateXML测试用例类的菜单项
(2)将产生出下面的图9.13所示的测试结果
从下面的图9.13所示的测试结果中,观察到对TestHibernateXML测试用例类执行过程是正确的。
反推断应用系统中的各个*.xml中的各个配置标签应该是正常的,否则将会出现Hibernate再启动过程中的异常抛出,同时SessionFactory对象和Session对象也部可能被创建出。
图9.13执行TestHibernateXML测试用例类的测试结果
7、添加对DAO组件HibernateDAOBean类中的各种CRUD方法进行测试的TestCase类
当对应用系统中的各个*.xml文件测试通过后,还需要对应用系统中的各个DAO组件
中的各种CRUD方法进行测试。
以进一步明确DAO组件中的方法的功能完成的正确性。
(1)添加测试用例类
右击测试项目,在弹出的菜单中选择【JUnit测试用例】菜单项,请参考下面的图9.14所示的菜单项目。
图9.14添加测试用例类的菜单项
在下面的图9.15所示的对话框中的类名称输入框中输入类名称为TestHibernateDAOBean,包名称为com.px1987.hexample.test,基类选择为junit.framework.TestCase,被测试的类为com.px1987.hexample.dao.HibernateDAOBean。
请参考图9.15所示。
图9.15添加测试用例TestHibernateDAOBean类的对话框
(2)进一步选择被测试类中的被测试方法
在本测试用例中将对被测试类HibernateDAOBean中的各个功能方法进行测试,因此选择这些方法的名称,请参考下面的图9.16所示。
图9.16选择被测试类中的被测试方法
(3)最后Eclipse将自动产生出下面的图9.17中所示的代码
图9.17Eclipse自动产生的TestHibernateDAOBean测试用例的代码
(4)编程该测试用例类中的各个测试方法
【例9-6】TestHibernateDAOBean测试用例类的代码示例,并请注意其中的黑体部分的代码。
packagecom.px1987.hexample.test;
importjunit.framework.TestCase;
importcom.px1987.hexample.dao.*;
importjava.util.*;
importcom.px1987.hexample.pobject.*;
publicclassTestHibernateDAOBeanextendsTestCase{
HibernateDAOInterfacehibernateDAOBean=null;protectedvoidsetUp()throwsException{}protectedvoidtearDown()throwsException{}publicvoidtestDoSelectBookDataFromDB(){StringselectHQL="fromBook";ArrayListactualReturn=hibernateDAOBean.doSelectBookDataFromDB(selectHQL);super.tearDown();hibernateDAOBean=null;super.setUp();hibernateDAOBean=newHibernateDAOBean();this.assertNotNull(actualReturn);
inttotalCoutner=allBookInfos.size();
}this.assertTrue(totalCoutner>0);IteratoroneIterator=actualReturn.iterator();while(oneIterator.hasNext()){BookoneBook=(Book)oneIterator.next();this.assertNotNull(oneBook.getBookName());}publicvoidtestDoInsertBookDataToDB()throwsException{booleanactualReturn=hibernateDAOBean.doInsertBookDataToDB();this.assertTrue(actualReturn);
}
}publicvoidtestDoUpdateBookDataToDB()throwsException{}publicvoidtestDodeleteBookDataToDB(){StringbookID="ff80808108c246390108c2463ee70001";StringbookID="ff80808108c246390108c2463ee70001";//应该根据实际来决定booleanactualReturn=hibernateDAOBean.doUpdateBookDataToDB(bookID);this.assertTrue(actualReturn);booleanactualReturn=hibernateDAOBean.dodeleteBookDataToDB(bookID);this.assertTrue(actualReturn);}
8、执行测试用例TestHibernateDAOBean类
(1)启动测试用例类
右击测试用例TestHibernateDAOBean类,在弹出的菜单中选择【运行方式】菜单项,然后再选择【JUnit测试】菜单项。
请参考下面的图9.18所示的操作方法。
图9.18执行TestHibernateDAOBean测试用例类的菜单项
(2)将产生出下面的图9.19所示的测试结果
从下面的图9.19所示的测试结果中,观察到对TestHibernateDAOBean测试用例
类执行过程是正确的。
反推断应用系统中的HibernateDAOBean组件类中的各个DAO方法的功能是正确的。
图9.19执行TestHibernateDAOBean测试用例类的测试结果
9、采用TestSuit方式来运行前面的各个TestCase类
(1)什么是测试套件
测试套件能给单元测试的各个测试用例的执行带来极大的方便,因为它可以将多个测试用例捆绑在一起运行,达到一呼而百应的批量处理效果。
因此,为了在以后的项目中的各个类进行扩展时,避免分别单独地执行各个测试用例。
为项目中的持久层中的各个DAO组件的测试用例添加一个测试套件类。
(2)添加测试套件类
右击测试项目,在弹出的菜单中选择【JUnit测试套件】菜单项,请参考下面的图9.20所示的对话框。
图9.20添加测试套件类的对话框
(3)选择需要添加到测试套件类中的各个测试用例类
在下面的图9.21所示的对话框中选择需要添加到测试套件类中的各个测试用例类,本例将前面的两个测试用例类选中。
请见图9.21所示。
图9.21在测试套件类中添加各个测试用例类的对话框
(4)Eclipse开发工具将自动地产生出下面的图9.22中所示的代码
图9.22Eclipse自动产生出的代码示例
10、执行该测试套件类
(1)启动测试套件类
右击测试套件AllTests类,在弹出的菜单中选择【运行方式】菜单项,然后再选择【JUnit测试】菜单项。
请参考下面的图9.23所示菜单状态。
图9.23运行测试套件AllTests类的菜单项
(2)将产生出下面的图9.24所示的测试结果
当然,只要测试套件类中的各个测试用例类是正确的,运行测试套件的结果也应该是正确的。
`
图9.24执行测试套件AllTests类的测试结果
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JUnit 测试 Hibernate