The main feature of JUnit-Tools is to generate JUnit test-elements (packages, classes, methods, test-cases, mocks) depending on an existing java-class and logic. It supports the Test-After Development: Create JUnit-tests after writing or modifying application code. Other input-channels (e.g. UML-models) for the generation of test-elements to support Test-Driven Development are possible but not available yet.
JUnit-tests usually have a similar structure: Create the preconditions, run the class under test, validate the postconditions. The created test-elements for the classes and methods should have the same name-conventions to find easily the corresponding tests. These are good reasons for a generator.
The main difference to other tools is, that JUnit-Tools is complete open source and that it is easy to adapt the structure and generated output to the own needs and requirements. There are many extension points and interfaces to change and contribute the base-implementations. An integration for the IDE eclipse is available and it's easy to install, set up and run the tools.
Depending on an existing Java class and logic following test-elements can be generated: packages, classes, methods, test-cases, nested test-suites and mock-classes.
Existing test-elements during a generation will be analyzed and synchronized. Manual changes in the test-classes will not be overridden and a regeneration for new methods is possible.
If there are dependencies to test-elements during a refactoring of a class or method, the test-elements will be automatically updated.
The references to the test-classes, test-methods, test-suites and mock-classes can be cleaned automatically.
A simple but important feature is to switch between the class and method under test and the corresponding test-elements.
The target of this coverage report is to detect new classes and methods with logic but without JUnit-Tests. It is a supplement to other test-coverage tools.
The vision of the JUnit-Tools project is to freeze almost automatically the important states and behaviors of a software based on the existing logic to improve the quality of changes.