Roughly speaking, a Java port of minithesis, a minimal property based testing library for educational purposes.
minithesis supports roughly the following features, more or less in order of most to least important:
- Test case generation.
- Test case reduction (“shrinking”)
- A small library of primitive possibilities (generators) and combinators.
- A Test case database for replay between runs.
- Targeted property-based testing
- A caching layer for mapping choice sequences to outcomes
jiminy-thesis currently supports 1-4. I’ve additionally added coverage based test-case generation.
The implementation is close to minithesis for the features included, though there are various TODOs and some details may be different/missed. The biggest difference is that the library internals minimize the use of exceptions for control flow. This may well be a mistake, but it is my mistake.
The example database is written to target/minithesis-cache
. If that
target does not exist or is not writeable, then an exception will be
logged, but operation should continue.