;;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Base: 10 -*- ;;;; ************************************************************************* ;;;; FILE IDENTIFICATION ;;;; ;;;; ID: $Id: example.lisp,v 1.5 2003/08/04 16:13:58 kevin Exp $ ;;;; Purpose: Example file for XLUnit ;;;; ;;;; ************************************************************************* (defpackage #:xlunit-example (:use #:cl #:xlunit) (:export #:math-test-suite)) (in-package #:xlunit-example) ;;; First we define some basic fixtures that we are going to need to ;;; perform our tests. A fixture is a place to hold data we need ;;; during testing. Often there are many test cases that use the same ;;; data. Each of these test cases is an instance of a test-case. (defclass math-fixture (test-case) ((numbera :accessor numbera) (numberb :accessor numberb)) (:documentation "Test fixture for math testing")) ;;; Then we define a set-up method for the fixture. This method is run ;;; prior to perfoming any test with an instance of this fixture. It ;;; should perform all initialization needed, and assume that it is starting ;;; with a pristine environment, well to a point, use your head here. (defmethod set-up ((fix math-fixture)) (setf (numbera fix) 2) (setf (numberb fix) 3)) ;;; Then we define a teardown method, which should return the instance ;;; to it's original form and reset the environment. In this case ;;; there is little for us to do since the fixture is quite static. ;;; In other cases we may need to clear some database tables, or ;;; otherwise get rid of state built up while perofmring the test. ;;; Here we just return T. (defmethod tear-down ((fix math-fixture)) t) (def-test-method test-addition ((test math-fixture)) (let ((result (+ (numbera test) (numberb test)))) (test-assert (= result 5)))) (def-test-method test-subtraction ((test math-fixture)) (let ((result (- (numberb test) (numbera test)))) (assert-equal result 1))) ;;; This method is meant to signal a failure (def-test-method test-subtraction-2 ((test math-fixture)) (let ((result (- (numbera test) (numberb test)))) (assert-equal result 1))) ;;;; Finally we can run our test suite and see how it performs. (textui-test-run (make-test-suite 'math-fixture))