实际对象的行为还不确定。
实际的对象创建和初始化非常复杂。
实际对象中存在很难执行到的行为(如网络异常等)。
实际的对象运行起来非常的慢。
实际对象是用户界面程序。
实际对象还没有编写,只有接口等。
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 函数