Judy release notes



Judy requires Java 1.8 to be run.


What is new

Plugin architecture

The main goal of the project is to provide an extensible platform to conduct research on the mutation testing. Judy 2 greatly fulfilled these intentions but by the time she started being cluttered with the added functionality. Further development and feature introduction have stalled.

Next edition of the tool evolves into modular system consisting of highly cohesive sub-projects - plugins. Each plugin has only one single responsibility to cover without consciousness of other, often unrelated, functionalities. The whole application is glued together by plugin autoload, dependency injection and it is event driven. These properties makes the Judy’s core small, simple and ready to be extended in easy way. You can read more about technical details in the Architecture overview.

Introduced design required a few tradeoffs. Missing features are going to be backported in next milestones.

Project discovery

Judy detects classes, tests and libraries by scanning file’s content. Classpaths are automatically calculated from found files.

Result file format

Judy allows to choose a file format of a result between xml and json. By default json is used.

Dependency repacking

All external dependencies, except junit, are repacked into pl.edu.pwr.judy namespace in order to resolve library clashes with a software under test and its own dependencies.

Build system

The tool uses the Gradle build system to manage sub-projects, automate dependency management and library repackaging, functional testing and publishing.

What is changed


The ability to run tests simultaneously in different threads in the single JVM instance was removed. A new model, based on standalone workers, is going to be introduced in the future.

HOM strategies

The ability to choose and run HOM strategies in the core Judy distribution was removed. Separate plugins for different HOM strategies are going to be backported and released in the future.

Distributed calculations

The ability to run mutation testing in cluster was removed. This is going to be superseded by the new multithreading model in the future.