I agree,
We do develop our applications so they can run on both a pc and all the cinterion chips we support through the use of the microemulator library.
https://code.google.com/p/microemu/
This is done to facilitate development on a pc for business logic while retaining most of the J2ME functionalities working (such as opening a TCP socket and all).
The rest of the hardware-specific stuff we abstract, emulate or mock through interfaces.
For unit testing we simply use the latest version of junit. We setup yet another java project in parallel where we write our tests in the same packages to the code being tested (with a dependency on the first project) so we can use superior versions of Java and all the glory of Java 6, 7 or even 8.
This way we can unit test anything we want in our code, mocking hardware features doing so.
Hope this helps!