(Debatable) According to the State of Common Lisp 2015, the two following test frameworks are worth considering nowadays:
Also active in 2018 are
See also Test framework comparison.
Known Common Lisp Test Frameworks on CLiki include:
- ASDF-Install-tester - The system is completely unmaintained
- check-it - check-it is a randomized specification-based test generation tool (à la Haskell's QuickCheck) designed to be used from within other test frameworks
- CheckL - CheckL is less of a test "framework" and more of a quicker, less formal, but more "live" way to write tests, which can easily be formalized into FiveAM tests at a later point
- cl-smoketest - cl-smoketest is a small test framework for setting up basic does-it-compile tests
- CL-TEST-MORE - CL-TEST-MORE is a unit test framework inspired by Perl's Test::More
- cl-unit-test - cl-unit-test has been tested by itself with 100% test code coverage
- clos-unit - Basically a port of JUnit to Common Lisp, probably deprecated in favor of xlunit
- CUSTOM-HARNESS - CUSTOM-HARNESS is yet another test harness framework for Common Lisp code
- de.setf.utility - de setf utility is a collection of Common Lisp utilities functions and several purpose-specific libraries
- EnclineTest - EnclineTest (etest) is a unit test framework, developed within Encline project
- Eos - Eos is a Test Framework by Adlai Chandrasekhar, and is based on FiveAM
- FiveAM - FiveAM is a Test Framework whose goal is to be as simple as possible
- FReT - FReT is a unit test framework with interactive testing and authoring of tests
- LIFT - The LIsp Framework for Testing is another testing framework in the JUnit / SUnit lineage
- lisp-unit - lisp-unit is a simple Common Lisp Test Framework
- lisp-unit2 - Lisp-unit2 is a major refactoring of the Common Lisp Test Framework lisp-unit
- MSL-Test - MSL-Test is Paul Foley's Test Framework
- NST - NST is a test framework for Common Lisp offering separate and reusable fixture definitions, test groups, extensible test criteria, ASDF integration, and optional JUnit XML output
- parachute - Parachute is a simple-to-use and extensible testing framework with compatibility layers to other test frameworks
- ptester - ptester is a portable version of Franz's tester library
- rt - Short for "regression testing", an older (last update 1995)
- rtch - rtch is a Development tool and hackbrary which facilitates organizing tests in the RT test framework in a directory hierarchy
- Stefil - hu.dwim.stefil is an abandoned test framework with a living fork at fiasco, and its philosophy is to stay as transparent as possible, disrupting the normal Lisp application development process as little as possible
- testbild - testbild, the universal test output production and consumption facility, is designed to provide a common interface for
- tester - tester is the test framework harness that Franz uses for Allegro CL (ACL)
- unit-test - unit-test is a Test Framework by Alan Picard
- xlunit - XLUnit is a Test Framework based on XPTest and JUnit
- XPTEST - delete this page
Like COVER: Common Lisp test case coverage determination tool.
clos-unit ( clos-unit appears to be deprecated in favor of xlunit which has almost the same semantics ) are basically implementations of the *Unit design (like JUnit, SUnit etc), where a test case (and a test fixture, there isn't much differentiation) is a CLOS class, and the individual tests are its methods. Failure of a test is usually indicated by calls to some assertion forms or by signaling an appropriate condition.
FiveAM seems to offer similar functionality, but handles it in another fashion. For example, setting up and tearing down a fixture isn't done with defining methods for a test-case class, but with a WITH-FIXTURE macro which simply wraps one piece of code with another.
rt is an older library from the CMU AI repository. It takes a more simplistic approach, a single test is made up of its name, a form to evaluate, and the expected return values of this form. CLUnit takes a similar approach, but with a lot more sugar, like collecting and classifying tests, giving a comparison function to match the real with the expected output etc.