Imagine that you are a Java developer, and you’re about to start your next big project. You need to make the fundamental decisions that will stick with you for the rest of the project. You want to pick the best object-oriented abstraction of your flexible data model because you do not want to deal with plain SQL. You want to support all kinds of data, and ideally, support all sorts of databases.

The final step before the release is to cleanup the test code. Some test cases are really too complex
and I want to make them more clear and straightforward. Simpler tests are making adding new features
less error prone and more straightforward.

We haven’t changed the logic and still have the same code to use. This way
we’ve separated behaviour and definition of cleaning from the logic of cleaning itself. It’s very
clear and easy to add new definitions.

I was planning to implement support for few new frameworks out of the box.
This way some projects will be discovered by default. No need for custom configuration. That is the main purpose
of the tool. I’ve implemented Grails 2.x support but it turns out that I have to write down lots of code in order
to implement another cleaning definition. That was the perfect moment to small refactor as I knew what kind
of usage would be most suitable for me.