How can I load code to be able to test all of it?

I'd like to test my code in module.rkt with tests in module-test.rkt and the rackunit documentation advises I use

(require rackunit "module.rkt") in module-test.rkt

Alas, this only allows me to test things bound to symbols exported from module.rkt and I want to test everything..

Guessing, I looked up load as an alternative and got lost in the explanation of load-handlers and other things I didn't understand.

What, please, is the easy and accepted way to do what I'd like to do?

  1. A mix of namespace-require module->namespace namespace-mapped-symbols and eval can get you all of a module. That's dirty.

  2. Consider using a submodule for testing instead. (Modular Programming) might help.

I would like this low-level code testing individual procedures to exist outside of the tree of logical modules which comprise the system. Otherwise it totally bloats the files with low-level test code. I would like the provide and require forms to relate only to how the modules are expected to be used, so they'll work fine for integration tests, but not low-level tests. Am I missing something or is this a reasonable thing to want to do? Is there an easy and non-dirty way to achieve this? if not, I'll create a make rule to concatenate the the two files into a temporary file. Thanks for any suggestions on a non-kludgy way to achieve this!