When I wrote predominantly Java code, I used JMock to mock dependencies in my unit tests. When working with simple interfaces where you expect the method to always return the same result, this works pretty well. 

JMock however becomes more problematic when the objects you are mocking start to become a bit more complex. For example, if you want a mock object to respond differently to subsequent method calls,  you'll need to program that in using the mock libraries DSL.

A far simpler approach is to build the mock objects yourself. It really doesn't take much effort to have a mock object with a queue of responses, whereby each invocation simply pops from the front of the queue. These hand made mock objects are very easy to write and understand, and do not require you to dive into a mock library's documentation to find the right incantation on how to achieve complex tasks.