测试驱动开发-EasyMock

使用场合

实际对象的行为还不确定。

实际的对象创建和初始化非常复杂。

实际对象中存在很难执行到的行为(如网络异常等)。

实际的对象运行起来非常的慢。

实际对象是用户界面程序。

实际对象还没有编写,只有接口等。

1.import static org.easymock.EasyMock.*; only non-internal, non-deprecated class

基本套路

create a Mock Object for the interface we would like to simulate

record the expected behavior

switch the Mock Object to replay state.

将mock对象传递给target对象(多在setup和teardown中)

Verify mock

实现的功能

1.在record处记录函数的执行,并使用verify验证调用是否正确

2.设置调用次数和返回值 andReturn 异常 andThrow

3.对同一方法设置不同的方法和异常

4.设置调用次数: range, 最少一次,任意次数

5.Strict Mock:测试methods的调用次数

6.当expected的参数是数组时,其使用equals()作为相等判断会出错,需要使用EasyMock predefined argument matchers

7.可以自定义arguments matchers

8.Reset()重新使用mock object

9. 当不关心调用次数时,可以使用Stub behavior

10.Nice Mocks:当mock出现错误行为时,不抛出异常,而是返回empty value

11.可以测试mock对象之间的调用次序(多线程)

12.Naming Mock Object:创建带名字的mock,在异常信息时可以显示

限制

Mock对象不能测试真实对象的equal hascode toString 函数

你可能感兴趣的:(object,测试,equals,interface,methods,behavior)