About Concutest
Thread Checker
Schedule-Based Execution

Using Concutest
How to Run


Give Feedback
Features, Bugs, Support
Contact Us

SourceForge Project
Developer Docs
Developer Blog
Mathias Ricken's Homepage


ConcJUnit is a concurrency-aware version of JUnit that actively supports the developer in writing unit tests for concurrent programs.

The original version of JUnit and other frameworks like TestNG are not effective in testing concurrent programs: Their criteria for success and failure are incorrect, and their design promotes writing bad tests that succeed by default even when they should fail. This makes writing good concurrent tests as hard as writing good concurrent programs.

We have corrected a number of defects of JUnit. The two most important improvements are:

  1. Automatic exception handling in auxiliary threads.
  2. Requiring the main thread to join with all threads it has spawned.

ConcJUnit is designed as a drop-in replacement for JUnit versions 3.8.2 and 4.7. If you are currently using JUnit 4.7, simply replace the original junit-4.2.jar file with our concutest-junit-4.7.jar or concutest-junit-4.7-withrt.jar file.

We recognize the tremendous efforts the creators of the original JUnit have made and in no way claim to have written most of the code. We have only made small improvements, view ConcJUnit as a temporary research framework, and hope that our changes will eventually be merged with the original JUnit. When using ConcJUnit, please also respect JUnit's licensing terms.

To let ConcJUnit warn you about child threads that did end before the main thread but were not joined by the main thread (threads that got "lucky"), please download the concjunitrt.jar and use it to generate a modified Java runtime library (rt.concjunit.jar). Then prefix Java's boot classpath using the -Xbootclasspath/p:rt.concjunit.jar command line option.

More information will be available soon.

ConcJUnit Downloads

Preliminary versions of the ConcJUnit binaries and source code are available for download here. The downloads that include the Processing Tool (concjunitrt.jar), maked as (withrt) already include the Java Runtime Library Processing Tool, which can be invoked with the java -jar xxx-withrt.jar command. The binary downloads without the processing tool need the separate concjunitrt.jar file.

Concutest is partially funded by the National Science Foundation and the Texas Advanced Technology Program.
Copyright © 2004-2010 by Mathias Ricken. All rights reserved.
Support This Project