Chex4j allows you to document and enforce @pre and @post conditions of method calls with runtime or build time class file instrumentation. Conditions run as fast as normal code.
- Compliments Test Driven Development by asserting logic held in method annotations.
- Compliments Design By Contract by documenting and enforcing pre- and post- conditions of methods.
- Works with inheritance. You can @Pre or @Post logic to an abstract method on an abstract class and the logic will be injected into the concrete methods of the subclasses of classes which overload your method; even when you don't have their source code.
- Works with interfaces. If you add @Pre or @Post logic to an interface method the logic will be injected into the methods of classes which implement your interface; even when you don't have their source code.
- Offline instrumentation. See the ant build scripts in the chex4j-test project which show offline instrumentation of classes as part of a build so that you don't have to use the javaagent.
Chex4j works excellent.