模拟对象将模仿出于指导代码执行的惟一目的而编写的类的行为,以便它在测试时符合代码执行要求。最终,模拟对象数目可以随着应用程序类数目的增长而增长。使用 jMock、RMock 甚至 EasyMock 等框架有助于消除对物理的独立存在的模拟对象集的需求。
EasyMock 框架的一个主要缺点是不能模拟具体类 —— 而只能模拟接口。在本文中,我将向您展示怎样使用 jMock 框架来模拟具体类和 接口,以及如何用 RMock 测试某些模糊的情况。
在 Eclipse IDE 中配置 jMock 和 RMock
首先启动 Eclipse 集成开发环境 (IDE)。接下来,创建一个基本 Java™ 项目,稍后将把 JUnit、jMock 和 RMock Java Archive (JAR) 库导入到该项目中。将 Java 项目命名为 TestingExample。在 Java Perspective 内,选择 Project > Properties,然后单击 Libraries 选项卡,如下所示:
图 1. 在 Eclipse 中编辑 TestingExample 项目的属性
当 JAR 文件位于 Java 类路径(即,已在 Eclipse 内配置的 Java 运行时环境(Java Runtime Environment,JRE))中时,请使用 Add JARs 按钮。 Add Variable 按钮适用于文件系统(本地或远程)中的资源(包括 JAR)所驻留的具体目录,并且通常可以引用此按钮。在必须引用 Eclipse 中默认的那些特定资源或为特定的 Eclipse 工作区环境配置的那些特定资源时,请使用 Add Library 按钮。单击 Add Class Folder,从已经配置为项目一部分的一个现有项目文件夹中添加资源。
对于本示例,请单击 Add External JARs 并浏览到已下载的 jMock 和 RMock JAR。将其添加到项目中。当显示图 2 中所示的属性窗口时,请单击 OK。
图 2. 已添加到 TestingExample 项目中的 jMock 和 RMock JAR
TestExample 源代码
对于 TestExample 项目,您将使用来自四个类的源代码:
ServiceClass.javaCollaborator.java
ICollaborator.java
ServiceClassTest.java
待测试的类将是 ServiceClass,该类包含了一个方法:runService()。服务方法将获取实现简单接口 ICollaborator 的 Collaborator 对象。具体的 Collaborator 类中实现了一个方法:executeJob()。Collaborator 是必须正确模拟的类。
第四个类是测试类:ServiceClassTest(实现的性质已经被尽可能地简化)。清单 1 将显示第四个类的代码。
文章来源于领测软件测试网 https://www.ltesting.net/