common-lisp

Unit testing

Using FiveAM

Loading the library

(ql:quickload "fiveam")

Define a test case

(fiveam:test sum-1
  (fiveam:is (= 3 (+ 1 2))))

;; We'll also add a failing test case
(fiveam:test sum2
  (fiveam:is (= 4 (+ 1 2))))

Run tests

(fiveam:run!)

which reports

Running test suite NIL
 Running test SUM2 f
 Running test SUM1 .
 Did 2 checks.
    Pass: 1 (50%)
    Skip: 0 ( 0%)
    Fail: 1 (50%)
 Failure Details:
 --------------------------------
 SUM2 []: 
      
(+ 1 2)

 evaluated to 

3

 which is not 

=

 to 

4

..
 --------------------------------
NIL

Notes

  • Tests are grouped by test-suites
  • By defaults tests are added to the global test-suite

Introduction

There are a few libraries for unit testing in Common Lisp

  • FiveAM
  • Prove, with a few unique features like extensive test reporters, colored output, report of test duration and asdf integration.
  • Lisp-Unit2, similar to JUnit
  • Fiasco, focusing on providing a good testing experience from the REPL. Successor to hu.dwim.stefil

This modified text is an extract of the original Stack Overflow Documentation created by the contributors and released under CC BY-SA 3.0 This website is not affiliated with Stack Overflow