对复杂的单元测试使用模拟对象
作者:网络转载 发布时间:[ 2015/8/19 15:12:04 ] 推荐标签:软件测试 单元测试
Eclipse 中集成了大量的单元测试工具。其中许多是基于 Junit 并在性能上有所扩充。我让我的学生们在面向对象的设计类中使用 Coverlipse 插件程序来检测他们的测试的代码覆盖率。我希望在他们所有的应用程序代码中有的覆盖率。一开始他们不喜欢这样,但是到了期中,他们的测试的覆盖率通常都达到。
我已经为 TestNG,、djUnit、 Eclipse Test 和 Performance Tools Platform (TPTP) 安装了插件程序。其中每一个都有一组特性支持有效的单元测试。关键是有大量合适的单元测试工具提供给每一个开发人员,因此缺少工具不再被认为是没有创建单元测试的理由。
测试带有复杂的依赖性?使用模拟对象
一个好的单元测试检测一个独立的方法。在一个设计良好的系统里,对象们协同工作共同完成一项任务;因此,为了检验一种方法,通常我们需要提供使得这种方法完成其任务的其他对象。企业应用程序里的对象相当复杂,很难创建,并且他们的状态依赖外部的对象。一个数据库相关的应用程序有许多这样的对象,如连接、语句、结果集等等。我们想要单元测试简单快速的执行。如果我们需要在每次单元测试前将数据库重新设置到一个已知状态,那么测试会相当复杂并且运行速度自然会比我们期望得要慢。
简化单元测试的一个流行技巧是创建仅用于测试中的模拟对象。为了达到快速测试的目的,我们创建模拟对象来代替真实的对象。模拟对象被 Tim Mackinnon、 Steve Freeman 和 Philip Craig 1 所支持并成为单元测试工具箱的主要组成部分。一些书籍和论文讲述了如何在单元测试中使用模拟对象,描述的是模拟对象应该具备的能力以及如何使用他们。尽管如此,在没有任何基础的情况下开始创建模拟对象是相当困难的。我们希望能够自动完成这项任务。
有一些软件工具,像 EasyMock, 2 提供了自动帮助功能,但是它们可能很复杂而且也很难使用。此外,他们不是总能够与我们其他的开发工具兼容。但是利用现有的工具可以有一些创建模拟对象或是相当能力的简单方法。文章后面的部分将展示利用 Eclipse 平台做到这一点的一些方法。
从接口创建模拟对象
面向对象的设计专家建议我们对接口进行编程。如果我们这样做,设计会更加新颖、灵活并且对变化反应灵敏。我们来看这样一个对接口编程例子,我们使用 Java JDBC? API 来操作数据库。我们将考虑基于 JDBC API Tutorial and Reference, Second Edition 一书中代码的简单例子。在关系数据库中有一个表格,表格中有 a, b, c 三列,有整数型、字符串型和浮点型三种数据类型。下面的方法,在一个被称为 DatabaseExample 的类中,使用数据库 Connection 对象,从数据库中读取记录并打印出数值。
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系SPASVO小编(021-61079698-8054),我们将立即处理,马上删除。
相关推荐
iOS单元测试mocha、chai、sinon和istanbul实现百分之百的单元测试覆盖率关于单元测试的总结及思考编写更好的Java单元测试的7个技巧Android单元测试框架Robolectric3.0介绍(一)使用Kiwi单元测试总结单元测试如此重要,为什么你不知道Python单元测试??使用装饰器实现测试跳过和预期故障对Controller的单元测试写好单元测试的10个技巧单元测试的重要性Angular单元测试系列??Component、Directive、Pipe 以及ServiceAndroid单元测试的整理提升单元测试体验的利器--Mockito使用总结iOS UnitTest单元测试Vue的单元测试探索(二)
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11热门文章
常见的移动App Bug??崩溃的测试用例设计如何用Jmeter做压力测试QC使用说明APP压力测试入门教程移动app测试中的主要问题jenkins+testng+ant+webdriver持续集成测试使用JMeter进行HTTP负载测试Selenium 2.0 WebDriver 使用指南