lisp-unit is a simple Common Lisp Test Framework. It is an extension of the library written by Chris Riesbeck . There is a long history of testing packages in Lisp, usually called "regression" testers. More recent packages in Lisp and other languages have been inspired by JUnit for Java. For more information on both unit testing and JUnit, visit

lisp-unit project page on github.


The main goal for lisp-unit was to make it simple to use. The advantages of lisp-unit are:
  • Written in portable Common Lisp.
  • Loadable as a single file.
  • Loadable with ASDF.
  • Loadable with QuickLisp.
  • Dead-simple to define and run tests.
  • Supports redefining functions and even macros without reloading tests.
  • Supports test-first programming.
  • Supports testing return values, printed output, macro expansions, and error conditions.
  • Groups tests by package for modularity.

Features in Version 0.9.2

The latest version of lisp-unit introduces a departure in interface and features from the original lisp-unit. The interface has been simplified by reducing the number of functions for managing tests and unifying the management function arguments. Test results are now stored in a results object with detailed assertion output suppressed by default. The test results object is used to investigate failed assertions and execution errors in detail without having to read through all assertion results. The define-test macro has been updated to accept a documentation and tags. A test can be tagged to facilitate unit testing of a subset of the tests in a package. See the project wiki for a full description of these features.
  • Floating point extensions
  • Simplified Interface
  • Test reporting object with improved printing of results
  • Tagged tests for unit testing subsets

Future Features

The future features list is not guaranteed to be implemented, just a list of ideas for further extensions.
  • Fixtures
  • Test suites
  • Benchmarking tools
  • Test Anything Protocol (TAP) support