PatternTesting is a testing framework that allows to automatically verify that Architecture/Design/Best practices recommendations are implemented correctly in the code. It uses AOP and AspectJ to perform this feat. Read the What is Pattern Testing page for more details.

Vision of PatternTesting

To be the Minesweeper of Your Java Code!

What does this mean?

Do you known the computer game "minesweeper"? There you have to find the mines in a field. If you are not careful and hit a field with a mine the game is over.

PatternTesting is not a game but it gives you hints where there may be mines in your software. It is up to you to remove the mines before they explode at the users of your application or damage your database.

Find the mines in your code before your users will find them. Otherwise: GAME OVER!

What Says Sloganizer?

generated by


Errors in code can be annoying. Especially when they pop up in production and you realize that this kind of error could be have been prevented. There are antipatterns known in the internet which describes the cause of such errors and what you can to to prevent them. PatternTesting helps you to detect some common antipatterns and violation of common practices.

History of Version 1.x

For the history of Version 2.x have a look a the changelog.

11/11/2017 last version with CVS (v1.8)
13/08/2017 NetworkTester added
11/05/2017 bugfix of ClasspathMonitor for Spring Boot
06/01/2017 switch to Java 7 and version 2 of Log4J
17/08/2016 enhancements for JMX
27/03/2016 Eastern version
29/02/2016 leap year version
06/01/2016 finally changed to Java 6
04/07/2015 Format of websequence diagrams is supported in 1.5.2.
26/01/2015 Patterns can now be used in 1.5.1 to exclude classes from checks done by the different XxxTester classes.
06/01/2015 ClasspathMonitor in 1.5.0 is now more familiar with WebSphere's classloader
14/06/2014 1.4.3 allows the logging of SQL statements in DEBUG level.
05/05/2014 1.4.2 allows you to profile SQL statements and monitor it via JMX (with the SqlStatistics MBean).
06/04/2014 With 1.4.1 you can enable DB monitoring by using "jdbc:proxy..." as JDBC URL.
06/01/2014 With 1.4.0 the generation of sequence diagrams is possible.
06/01/2013 Delivery of 1.3.0
15/07/2012 Delivery of 1.2.20
23/03/2012 Delivery of jubilee release 1.2.10-YEARS
06/01/2012 Delivery of 1.2.0
22/04/2011 Delivery of 1.1.0 for the Stuttgarter Test-Tage 2011
18/10/2010 Delivery of 1.0.3 and upload to
08/09/2010 Delivery of 1.0.2
18/07/2010 Delivery of 1.0.1
20/06/2010 Delivery of 1.0.0
28/01/2010 talk "Pleiten, Pech und PatternTesting" at the OOP 2010 in Munich
22/01/2010 Christian Heise joins the Pattern Testing project. Welcome Chris!
02/01/2010 Begin with 1.0 and move to
20/12/2009 Delivery of version 0.9.8 (probably the last 0.9 version)
11/09/2009 Begin to deliver version 0.9.7 with improved patterntesing-samples.
20/06/2009 Hector Tenedero joins the Pattern Testing project. Welcome Hector!
02/05/2009 Delivery of version 0.9.6 for the Stuttgarter Test-Tage 2009.
30/03/2009 after the project split (patterntesting-exception, patterntesting-concurrent, patterntesting-check-ct, patterntesting-check-rt) all sub projects have now version 0.9.5
26/03/2009 PatternTesting Check is now splitted into a static part (PatternTesting Check.CT for checks during compile time) and a dynamic part (PatternTesting Check.RT for checks during runtime)
23/03/2009 Exception support is now moved into its own project - PatternTesting Exception
Thread and concurrency support is also moved into its own project - PatternTesting Concurrent
20/03/2009 release of 0.9 for patterntesting-rt, patterntesting-check, patterntesting-samples and patterntesting-tools.
12/12/2008 PatternTesting 0.8.0, redesign and split into several subprojects. Avalon is no longer support because this project is dead. If you need Avalon support use PatternTesting 0.6.x.
24/11/2008 Marko Umek joins the Pattern Testing project. Welcome Marko!
03/11/2008 PatternTesting 0.6.1 has been released.
05/10/2008 PatternTesting 0.6.0 has been released.
09/09/2008 begin with PatternTesting 0.6.0 with support of AspectJ 1.6 and Java 6
27/04/2008 PatternTesting 0.5.1 has been released.
23/04/2008 Got some new ideas for the AbstractNullPointerTrap on a BOF session about AOP on the JAX. You can now use annotations (@NullArgsAllowed and @MayReturnNull) to mark methods.
28/01/2008 PatternTesting 0.5.0 has been released.
06/01/2008 Switched to Maven 2. Documentation is now generated with it.
May 2007 Joined the project (Oliver Boehm). I will try to reactivate it.
20/02/2004 Shohara Shaikh joins the Pattern Testing project. Welcome Shohara!
10/11/2004 Xavier Warzee joins the Pattern Testing project. Welcome Xavier!
15/09/2004 PatternTesting 0.3 has been released.
11/08/2004 Work begins on the project again. Updated .3dev version to be compatible with maven 1.0 and aspectj 1.2. More enhancements to follow!
25/04/2004 Added support for AspectJ 1.1.1
19/04/2004 New StackTrace Pattern Test.
03/03/2004 Matt Smith takes the lead and gives a new life to the Pattern Testing project. Welcome Matt!
28/9/2002 New ThreadSafe Pattern Test (part of the Avalon Pattern Test Suite).
22/9/2002 New Database Pattern Test.
18/9/2002 Jitendra Joshi joins the Pattern Testing team!
15/9/2002 Version 0.2 has been released. It now contains a fully working Maven plugin. In addition, the AspectJ extension has been much improved and is now based on the AspectJ Ajc Ant task which it extends.
14/9/2002 Version 0.1 has been released. At the moment it only contains an AspectJ extension to generate AJC results in XML. It will be used for the MAven plugin later on in order to generate HTML reports.
12/9/2002 Reorganisation of the project structure and build (we are now using Maven).
12/9/2002 Jerome Bernard joins the Pattern Testing team!
11/9/2002 Steve Donagh joins the Pattern Testing team!
13/6/2002 Stephen Cheng joins the Pattern Testing team!
23/3/2002 Start of the Pattern Testing project.