轉自:
http://billben.iteye.com/blog/1872196
http://harrywu304.blog.163.com/blog/static/8456603201141611147777/
可用的Mock Toolkit有許多,比較常見的有EasyMock, Jmock和JMockit等等,到底選哪個呢,Jmockit的官網上有個特性對比列表,很詳細:
| Feature |
EasyMock |
jMock |
Mockito |
Unitils Mock |
PowerMock: EasyMock API |
PowerMock: Mockito API |
JMock it |
| Invocation count constraints |
√ |
√ |
√ |
|
√ |
√ |
√ |
| Recording strict expectations |
√ |
√ |
|
|
√ |
|
√ |
| Explicit verification |
|
|
√ |
√ |
|
√ |
√ |
| Partial mocking |
√ |
|
√ |
√ |
√ |
√ |
√ |
| No method call to switch from record to replay |
|
|
√ |
√ |
|
√ |
√ |
| No extra code for implicit verification |
|
|
N/A |
N/A |
|
N/A |
√ |
| No extra "prepare for test" code |
√ |
√ |
√ |
√ |
|
|
√ |
No need to use @RunWith annotation or base test class |
√ |
√ |
√ |
|
|
|
√ |
| Consistent syntax between void and non-void methods |
|
√ |
|
√ |
|
|
√ |
Argument matchers for some parameters only, not all |
|
|
|
√ |
|
|
√ |
Easier argument matching based on properties of value objects |
√ |
|
√ |
√ |
√ |
√ |
√ |
| Cascading mocks |
|
|
√ |
√ |
|
√ |
√ |
| Support for mocking multiple interfaces |
|
|
√ |
|
|
√ |
√ |
| Support for mocking annotation types |
|
√ |
√ |
√ |
|
√ |
√ |
| Partially ordered expectations |
|
√ |
|
|
|
|
√ |
| Mocking of constructors and final/static/native/private methods |
|
|
|
|
√ |
√ |
√ |
Declarative application of mocks/stubs to whole test classes |
|
|
|
|
√ |
√ |
√ |
| Auto-injection of mocks |
|
|
√ |
√ |
|
√ |
√ |
| Mocking of "new-ed" objects |
|
|
|
|
√ |
√ |
√ |
| Support for mocking enum types |
|
|
|
|
√ |
√ |
√ |
Declarative mocks for the test class (mock fields) |
|
|
√ |
√ |
√ |
√ |
√ |
Declarative mocks for test methods (parameters, local fields) |
|