Easymock十分钟入门

一、Easymock简单介绍

EasyMock 是一套用于通过简单的方法对于给定的接口生成 Mock 对象的类库;

它提供对接口的模拟,能够通过录制、回放、检查三步来完成大体的测试过程,可以令 Mock 对象返回指定的值或抛出指定异常;

通过 EasyMock,我们可以方便的构造 Mock 对象从而使单元测试顺利进行。

二、easymock使用准备

下载所需的jar包,在maven的pom.xml加入依赖

<!--easymock-->

<dependency>

<groupId>org.easymock</groupId>

<artifactId>easymock</artifactId>

<version>3.0</version>

<scope>test</scope>

</dependency>

三、Easymock使用步骤

1、使用 EasyMock 生成 Mock 对象;
方式一:UserInfoExportService userInfoExportService = EasyMock.createMock(UserInfoExportService.class);
方式二:测试用例中使用多个 Mock 对象,可以使用如下方式
IMocksControl control = EasyMock.createControl();
UserInfoExportService userInfoExportService = createMock(UserInfoExportService.class);


2、设定 Mock 对象的预期行为和输出;
EasyMock.expect(userInfoExportService.checkPinExist(pin)).andThrow(new UserSdkExportException());


3、将 Mock 对象切换到 Replay 状态( 保存被mock的对象 )
EasyMock.replay(userInfoExportService);


4、调用 Mock 对象方法进行单元测试;
int acutal=userServiceImpl.checkPinExist(pin);
 assertEquals(3, acutal);


5、对 Mock 对象的行为进行验证( 在被mock的对象被应用之后,最好验证一下我们所设置的mock对象是不是按我们预期运行 )
EasyMock.verify(userInfoExportService);

四、扩展-powermock

powermock这个工具是在EasyMock和Mockito上扩展出来的,目的是为了解决EasyMock和Mockito不能解决的问题,比如对static, final, private方法均不能mock;

目前PowerMock 仅扩展了 EasyMock 和 mockito,需要和EasyMock或Mockito配合一起使用。

PowerMock有两个重要的注解:
在任何需要用到 PowerMock 的类开始之前,首先我们要做如下声明:
@RunWith(PowerMockRunner.class)
然后,还需要用注释的形式将需要测试的静态方法提供给 PowerMock:
@PrepareForTest( { YourClassWithEgStaticMethod.class })

注:此文在写作过程中使用的jar包版本是 powermock-easymock-junit-1.5.4.zip

猜你喜欢

转载自blog.csdn.net/weixin_42343424/article/details/81265825