I got my first JMS implementation in today. Let me tell you, the trick isn't in hooking into JMS, or even capturing all the ways the hooks can fail, the hard part is the testing.
Testing when you haven't played with a new toy before is almost impossibly done with TDD because half of the work is done in exploratory code, and I haven't become rigid enough in my development practices to prevent my exploratory code from eventually becoming my implementation code. And I don't write tests first for my exploratory code...sigh, I'm still figuring out the patterns for managing tests first, implementation later.
Anyway, JMockit came into the mix as a HUGE player today. I was able to mock out all of the JMS hooking and notifications, simulating a fully working JMS backend. However, the joke was on me. After my nice, pretty little test had been fully implemented, I discovered it failed in the full build. After much hair-pulling and research, it seems I am yet again looking at an OpenEJB classpath modification interfering with JMockit's AspectJ classpath modifications. Guess the two weren't meant to be together...and I'll probably spend an hour or two documenting those facts (and a bug to one or the other) tomorrow.