The ASM pain is now over with, I think. I've tried various mocking packages and settled on jMock. There really isn't a huge difference between jMock and EasyMock. In fact, they both use CGLib. However, there are some subtle differences.
First, jMock integrates better with JUnit 4.4. This is pretty cool. If I were so inclined, I could specify exactly which mocked methods are called and the sequence in which they should be called. I can even specify several sequences. Then, at the end of each test, it would check the expectations and throw an exception. I also like the smaller overhead of jMock. EasyMock forces you to perform a lot more setup overhead for each mocked object. This can be pretty annoying. jMock simlpy makes me annotate the class, create a Mockery (I love the jMock terminology), create the mock, put it where it belongs, and create Expectations. There is no need to call a method to start the replay because I'm not calling the methods on the actual mocked object to set the expectations.
Second, jMock uses CGLib but provides a dependency-free version of the JAR. This allows me to more safely put it at the front of the classpath. I have used this a bit with hibernate being called and see no issues.
Finally, if you need to mock a class rather than an interface, you have to use an Imposteriser. That has to be the best word that I've ever typed into code. Therefore, jMock wins style points.
Of course, I have done a lot of work on this and just now realized that I'm only mocking a single class. That class is used in a package that doesn't need to call hibernate in the unit tests. That makes my life a lot easier. This is mostly due to the fact that one of the custom service dispatchers we use is a final class. That made it impossible to mock. I ended up creating a singleton that my unit tests could replace. Since I wrote it, I could make an interface for it. At this point, the only thing class I'm mocking is InitialLdapContext. I think this is a pretty good situation.
There you have it. ASM pain still exists in the world, but I've found my way around it.