对复杂的单元测试使用模拟对象

发表于:2008-3-03 17:19

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:网络转载

分享:

    code 1

  为了给 readABC( ) 编写单元测试,我们需要一个 Connector 对象、一个 Statement 对象和一个 ResultSet 对象。Connector、 Statement 和 ResultSet 都是 java.sql 数据包中已设定的接口。特定的数据库系统提供这些接口的具体实现。readABC( ) 方法不需要依赖任何特定的数据库系统。我们的测试应该也不需要。事实上,我们可能也没有选定的数据库软件。既然测试里的方法写在接口中,我们可以为我们测试的每一个接口创建一个模拟对象。

  让我们以被传递到方法之中的 Connection 对象为出发点。我们调用的唯一的 Connection 方法是 createStatement( )。但是我们的 Connection 必须完成定义在 Connection 接口中的所有方法。使用 Eclipse 创建这样一个对象很简单。我们按照以下步骤执行:

  在 Eclipse 中创建一个完成 Connection 接口的新类(称它为 MockConection),检查为继承的抽象方法产生桩模块的选项(见图2)。Eclipse 为非 void 的方法产生带有默认返回值的新类。如果返回值是一个对象,默认为空值。
  找到那些以测试里的方法命名的方法,并提供一个行为像真实对象那样的实现。
  在模拟对象里添加方法,使得您的测试正确地初始化。

       Figure 2

        图2:从接口创建一个模拟对象类

code 2 

  为了实现我们的方法版本,我们需要一个对象来实现 Statement 接口。我们将按照上面的第一步创建一个默认值,称作 MockStatement。现在我们可以执行经过简单变换的方法:

code 3 

42/4<1234>
价值129的会员专享直播免费赠送,添加微信领取听课名额哦~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计

法律顾问:上海漕溪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2023
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号