After going through what I offer here earlier, I do not necessarily recommend it, but you asked.
If you want the application to look as good as if it were developed using LWUIT, but in a smaller jar file and which is easier to debug for you, one solution is to develop a graphical user interface from basic geometric shapes and images, LCDUI Canvas
You will sacrifice scalability and development time to achieve these 3 goals.
The GUI will be easier to debug for you because you will learn the code when you write, instead of learning LWUIT.
You will either spend time developing your GUI earlier, or even more time rewriting the code later.
Porting an application to a different screen size will require more work than using LWUIT.
If someone else is working on your code, you will have to teach them how it works.
Any modification to the GUI may mean that the base code needs to be updated to add or remove components.
The smaller the universal GUI, the smaller the application. You may want to discard some of the benefits of object-oriented programming to reduce the size of the application.
Regarding modern approaches, JavaME really does not lend itself to the Driven Development testing methodology, but there is a way to approach it, which may have some advantages.
Write a lot of tiny test midlets. Each of them has a maximum of one possible user interaction. They all have a common engine code for your algorithms, multithreading, storage, networking ...
Generic code will be used in the final product.
Once you have all the "unit tests", start combining them. each combination is only for testing interactions between two smaller sets of functionality.
Make a pyramid of an increasing number of midlets and test them along the way.
The top of the pyramid is the midlet you wanted to create all the time.
Most JavaME tests, unfortunately, are performed manually.
There are two ways to perform automated MIDlet testing.
Use the Keynote Device Anywhere scripting tools. Setting this time will require a lot of time, and the use of the service is not free, but the tests are performed as close as possible to real-world conditions, as you can get without buying phones and their SIM cards.
Use the Microemulator source code and modify it to automatically run test MIDlets and report test results, presumably as part of a Jenkins instance. Adapting Microemulator to your needs is probably not a trivial development task, and you will need to test your new automated system before you can run the first test on your midlets.