[erlang-questions] Design strategies for a test suite

Paul Fisher <>
Fri May 16 22:30:23 CEST 2008


On Fri, 2008-05-16 at 13:53 -0600, John Haugeland wrote:
> So, presume you're looking at a testing rig meant to have as little
> impact on a given module as possible.  Right now I'm just allowing it
> to be blind to a module's internals, which has allowed me to get my
> testing stuff down to a single line of code in the module to be
> tested.  That said, this limits my ability to test internals unless
> I'm willing to open new holes in my black box for test wires.  And,
> frankly, I'm just not very happy with that option.
> 
> Someone have a better idea?  I mean, if there was a way for me to just
> be horrible and ignore the export inbound call limits, I'd do it in a
> heartbeat, but I don't think that actually exists.
> 
> Should I just gracefully accept export([]) as a limitation?  Should I
> require the use of a macro-granted magical gateway?  Is there another
> option?

In general, I do the following at the beginning of the module:

%% API
-ifdef(NDEBUG).
-export([foo/0]).
-else.
-compile([export_all, debug_info]).
-endif.


And then at the end of the file I'll add test functions in the same way:

-ifndef(NDEBUG).

test() ->
    ok = alrules:start(),
    ok = test1(),
    ok.

test1() ->
    ok = foo()

-endif.

That way I can compile testable code with nothing and then production
code with NDEBUG defined.


-- 
paul




More information about the erlang-questions mailing list