使用场合
实际对象的行为还不确定。实际的对象创建和初始化非常复杂。
实际对象中存在很难执行到的行为(如网络异常等)。
实际的对象运行起来非常的慢。
实际对象是用户界面程序。
实际对象还没有编写,只有接口等。
1.import static org.easymock.EasyMock.*; only non-internal, non-deprecated class
基本套路
create a Mock Object for the interface we would like to simulaterecord 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,在异常信息时可以显示
最新评论