I would use submodules to manage selective testing, like this:
#lang racket (provide ;; -> Void ;; does foo and bar main) ;; ----------------------------------------------------------------------------- ;; implementation (require 2htdp/image) ;; ----------------------------------------------------------------------------- (define (main) (displayln `(foo and bar))) (module+ test (require rackunit) (check-equal? (main) (void))) (module+ io-test (require rackunit) (check-equal? (with-output-to-string main) "(foo and bar)")) Now run: > $ raco test -s io-test foo.rkt > raco test: (submod "foo.rkt" io-test) > -------------------- > FAILURE > actual: "(foo and bar)\n" > expected: "(foo and bar)" > name: check-equal? > location: > (#<path:/Users/matthias/Hub/P1/bootstrap-transfer-algebra/foo.rkt> 23 2 426 > 59) > expression: (check-equal? (with-output-to-string main) "(foo and bar)") > > Check failure > -------------------- > 1/1 test failures > $ matthias% raco test foo.rkt > raco test: (submod "foo.rkt" test) > (foo and bar) > 1 test passed ____________________ Racket Users list: http://lists.racket-lang.org/users