关于软件测试中的单元测试-----mock讲解

本文介绍了Java中的四种mock测试框架:EasyMock, Mockito, PowerMock和Jmockit。通过实例详细讲解了它们的使用方法,包括模拟静态方法、私有方法以及验证调用顺序等,帮助开发者更好地进行单元测试。" 132771762,19694561,Python操作MySQL数据库实战指南,"['Python', '数据库开发', 'SQL']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天下午接到百度作业帮的面试邀请电话,说要进行面试,我们约的是明天,挂了电话我上网查了一下我申请的职位竟然是软件测试,,,,好吧,只能恶补了

关于软件测试中的单元测试-----mock讲解:“

java的mock测试框架


无论是敏捷开发、持续交付,还是测试驱动开发(TDD)都把单元测试作为实现的基石。随着这些先进的编程开发模式日益深入人心,单元测试如今显得越来越重要了。在敏捷开发、持续交付中要求单元测试一定要快(不能访问实际的文件系统或数据库),而TDD经常会碰到协同模块尚未开发的情况,而mock技术正是解决这些问题的灵丹妙药。

mock技术的目的和作用是模拟一些在应用中不容易构造或者比较复杂的对象,从而把测试与测试边界以外的对象隔离开。

我们可以自己编写自定义的Mock对象实现mock技术,但是编写自定义的Mock对象需要额外的编码工作,同时也可能引入错误。现在实现mock技术的优秀开源框架有很多,本文对几个典型的mock测试框架作了简明介绍,希望对大家有所帮助。

1.EasyMock

EasyMock 是早期比较流行的MocK测试框架。它提供对接口的模拟,能够通过录制、回放、检查三步来完成大体的测试过程,可以验证方法的调用种类、次数、顺序,可以令 Mock 对象返回指定的值或抛出指定异常。通过 EasyMock,我们可以方便的构造 Mock 对象从而使单元测试顺利进行。

EasyMock 是采用 MIT license 的一个开源项目,可以在 Sourceforge 上下载到。(http://sourceforge.net/projects/easymock/files/EasyMock/)

如果使用maven也可以如下引入:

复制代码
<dependency><groupId>org.easymock</groupId><artifactId>easymock</artifactId><version>3.1</version><scope>test</scope></dependency>
复制代码

使用EasyMock大致可以划分为以下几个步骤:

①    使用 EasyMock 生成 Mock 对象;

②    录制 Mock 对象的预期行为和输出;

③    将 Mock 对象切换到 播放 状态;

④    调用 Mock 对象方法进行单元测试;

⑤    对 Mock 对象的行为进行验证。

现在用一个例子来简单呈现以上的步骤,假设有一个类需要被模拟的类如下:

复制代码
publicclassClass1Mocked {
     publicString hello(String name){
                   System.out.println("hello "+name);return"hello "+name;
         }publicvoidshow(){
                   System.out.println("Class1Mocked.show()");
         }
}
复制代码

 

  首先静态导入EasyMock的方法:

importstaticorg.easymock.EasyMock.*;

 

例1.1 EasyMock第一个例子

复制代码
@TestpublicvoidtestMockMethod() {
         Class1Mocked obj= createMock(Class1Mocked.class);①

         expect(obj.hello("z3")).andReturn("hello l4");②
         replay(obj);③

         String actual= obj.hello("z3");④
         assertEquals("hello l4", actual);

         verify(obj);⑤
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值