Concomitant is a framework and set of utilities for conveniently testing concurrent code in Java, integrated with JUnit and Mockito.
Concomitant is currently in very very early pre-release development, and is not yet practically usable. Feel free to jump in and help though!
We're actively aiming for a first v0.1.0 release at the moment, providing proof of concept usable implementations of the features for the core Concomitant use cases:
- Simply unit testing code with potential race conditions to deterministically verify thread safety
- Enabling integration testing of fundamentally concurrent systems deterministically
The specific steps to enable this are visible under the v0.1.0 milestone. Take a look at the system test suite for examples of how this works so far.
This is modelled around the design and principles of previous frameworks like MultithreadedTC and IMUnit, also pulling in elements from other investigations in this field such as ConcJunit and ThreadControl.
Concomitant is an attempt to pull these together into a practical framework for testing concurrent mechanisms, primarily for use with Mockito and JUnit 4, with a fluent and intuitive API in the same style as Mockito's.