- 1、本文档共35页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
(DBUNIT使用
用DbUnit进行数据库集成测试
1?引言
JUnit家族为Java应用程序的单元测试提供了基本框架,除JUnit之外,还有许多用于专门测试领域的其他工具和框架,本章将介绍用于数据库集成测试的重要工具DbUnit(注1)。
这里将数据库测试描述为“集成测试”,以便与普通“单元测试”相区分,集成测试涉及用户自身代码之外的架构,在数据库集成测试的情况下,额外的架构是真实数据库。
DbUnit通常称为“JUnit扩展”,它提供了TestCase子类,用户可以在自己的测试类中扩展它们,但也可以独立于JUnit以其他方式来使用DbUnit。例如,可以从Ant中调用DbUnit执行某些任务。
本章将说明DbUnit的主要用途,并提供一些典型用法的简单示例,然后还将继续介绍一些其他相关主题。
2?概述
DbUnit的用途
DbUnit有两种主要用途:
准备数据库
DbUnit可以在执行每个测试方法前用已知内容设置表。
验证数据库
DbUnit可以在执行每个测试方法后更方便地验证表的内容。
如果不使用DbUnit,用户还有一些其他选择,不过这些选择有些难以使用。用户可以手工编写JDBC调用来准备和验证数据库,但这通常很难编写,并且需要做大量工作;另外,如果在主应用程序中使用对象-关系映射(ORM),有人会建议通过它来用测试数据填充数据库,以及从数据库中读取数据值进行验证,这相当于用自己的数据访问层来测试自己的数据访问层,它可能不是个好主意。ORM技术涉及相当多的技巧,例如缓存,用户最好不要使用它,以免测试失败。
与此相对照,DbUnit提供了一种相对简单灵活的方式来准备和验证数据库,这种方式独立于被测代码。
设置DbUnit
要使用DbUnit,首先需要从上下载JAR文件,将此JAR文件放在集成开发环境或构建脚本的类路径中,/projects/dbunit/files/dbunit/
在类路径上还需要有数据库的JDBC驱动程序,除此之外,对于基本的DbUnit应用不需要其他依赖项。
用户还应该阅读上的在线文档接下来要决定调用DbUnit的方式。对于大多数测试场景,用户将在自己的测试类中直接或间接调用DbUnit,后面将要看到,也可以从Ant中使用DbUnit来执行某些任务。
用DbUnit运行测试
在用DbUnit进行数据库测试时是在对真实数据库进行测试,用户在运行测试时需要连接到真实数据库。
由于DbUnit和被测代码将在此数据库中插入和修改数据,因此每个开发人员都需要或多或少地拥有对数据库或者至少是其中的模式(schema)的独占访问权限,否则,如果不同的开发人员同时运行测试,他们可能相互冲突。理想的设置是,每个开发人员在自己的计算机上安装数据库软件,现在的计算机功能足够强大,可以用很小的开销来运行几乎任何数据库软件。
用户不必在自己的计算机上拥有完整的生产数据库副本,在数据量相对小的情况下,DbUnit测试工作得最好,它们通常测试系统功能是否正确,而不是测试系统性能。
有人建议将轻量级的嵌入式数据库(如HSQLDB或Apache Derby)用于运行集成测试,这样做的好处是,不需要在自己的计算机上安装特殊数据库软件,另外,使用嵌入式数据库运行测试的速度通常比真实数据库更快,因为可以在内存中运行大多数测试,并且一般开销更小。
然而,对于重要的应用程序,这通常是误导。应用程序往往包含数据库特有的代码或使用数据库特有的功能,除非在运行测试时使用相同的数据库,否则,无法对这些代码和功能进行正确测试。另外,即使是使用ORM层,如Hibernate或JPA,这似乎使代码独立于数据库,但ORM生成的实际SQL代码也可能因数据库不同而异,JDBC驱动程序无疑也不一样。
因此,嵌入式数据库与生产数据库之间存在着显著的功能差异,要使测试尽可能有用和有效,应该努力使数据库环境相同。当然,如果生产系统本身使用嵌入式数据库会更好。
/projects/junit/files/junit/4.8.1/junit-4.8.1.jar/download
IDatabaseConnection
当DatabaseTestCase或IDatabaseTester需要访问实际数据库时,它通过IDatabaseConnection接口进行访问。IDatabaseConnection本质上是一个JDBC Connection的包装程序或适配器,可以通过DatabaseConfig类来定制IDatabaseConnection,DatabaseConfig是一组“名称/值”形式的功能和属性,图14-2给出了这些类。
IDataSet
DbUnit将用于测试的实际数据表示为IDataSet,它是一组表中的数据的抽象表示。? 图14-2:IDatabaseConnection
您可能关注的文档
- (思想政治工作人员专业职务申报表.doc
- (BPM入门.doc
- (bpo服务外包论文.doc
- (Brandy在酒吧里是何种等级的白兰地酒.doc
- (Broadvi从智能移动开关走入家庭.docx
- (BRC方案书.doc
- (BS系统界面设计与开发详解.doc
- (BS系统的用户权限设计与实现.pdf.doc
- (bt3安装方法.docx
- (BticinoAxolute智能家居解决方案.doc
- 基于人工智能教育平台的移动应用开发,探讨跨平台兼容性影响因素及优化策略教学研究课题报告.docx
- 高中生物实验:城市热岛效应对城市生态系统服务功能的影响机制教学研究课题报告.docx
- 信息技术行业信息安全法律法规研究及政策建议教学研究课题报告.docx
- 人工智能视角下区域教育评价改革:利益相关者互动与政策支持研究教学研究课题报告.docx
- 6 《垃圾填埋场渗滤液处理与土地资源化利用研究》教学研究课题报告.docx
- 小学音乐与美术教师跨学科协作模式构建:人工智能技术助力教学创新教学研究课题报告.docx
- 《航空航天3D打印技术对航空器装配工艺的创新与效率提升》教学研究课题报告.docx
- 教育扶贫精准化策略研究:人工智能技术在区域教育中的应用与创新教学研究课题报告.docx
- 《区块链技术在电子政务电子档案管理中的数据完整性保障与优化》教学研究课题报告.docx
- 《中医护理情志疗法对癌症患者心理状态和生活质量提升的长期追踪研究》教学研究课题报告.docx
最近下载
- VAV-空调系统运行中的问题分析和改造的研究.pdf VIP
- 液冷盲插快接头发展研究报告 2025.pdf
- 《高速公路基础设施数字化建设数据标准》.pdf VIP
- DB21T 1388-2005 风沙半干旱地区花生节水高产优质栽培技术规程.pdf VIP
- 九江卫生系统招聘2022年考试真题及答案解析六1.docx VIP
- 九江2022年卫生系统招聘考试真题及答案解析一_1.docx VIP
- 2025年榆林能源集团有限公司招聘工作人员笔试真题及答案.docx VIP
- GB_T 18879-2020 滑道通用技术条件.docx VIP
- 鼻出血急救与护理.pptx
- 《医疗机构消防安全管理九项规定》考核试题.pdf VIP
文档评论(0)