test suite - specialized app (asserts) others: - too much "framework"-y stuff - test suites look-and-feel different than real applications - why new abstractions? aren't DEFUN's good enough? stefil: - ensured dynamic environment - ensured by DEFTEST, which is an insturmented DEFUN - macrology: IS, SIGNALS, FINISHES, WITH-EXPECTED-FAILURES - copy-pastable into the REPL - integration with slime - collected data is returned as the n+1th value - entry point anywhere IN-SUITE: mimicing in-package. - SUITE's are also DEFUN's. -RUN-CHILD-TESTS- is a lexically visible function for wrapping suite bodies in a certain environment. ...which leads to fixtures: code pieces :setup/:teardown result: - small, minimal impedance mismatch - test failure is the same as application failure: same tools, same way of fixing bugs. - test suite is just a specialized application with loads of asserts (hu.dwim.asdf:develop-system :hu.dwim.stefil) (in-package :hu.dwim.stefil.test) (is (= 2 2)) (without-debugging (is (= 2 4))) (deftest foo (a b) (is (= a b))) (foo 1 2) (deftest bar () (foo 1 1) (foo 1 2) (with-expected-failures (foo 1 3)) "original-return-value") (bar) fixtures result: - small, minimal impedance mismatch - test failure is the same as application failure: same tools, same way of fixing bugs. - test suite is just a specialized application with loads of asserts