[erlang-questions] I Hate Unit Testing...

pax <>
Thu Jan 29 00:18:05 CET 2009


>> In addition, eunit's ?debugVal() macro is incredibly useful -- it's
>> like the keystroke-friendly print stmt that Erlang doesn't have.  In
>> other words, one of your tests fail -- want to look at what's going  
>> on
>> inside the middle of a function somewhere?  Just wrap a line in ?
>> debugVal() and you get a *great* info message, with full line number
>> and everything.  It's so useful I sometimes -include eunit just to  
>> get
>> access to that during my dev process.
>
> I was thinking that the debug macros and the plain assert macros  
> should
> probably be made available directly from their own respective header
> files as well, but haven't got around to doing that yet.

Oooooh - yes please. Although I use common_test exclusively (for  
reasons I mentioned in a previous post), I usually include the eunit  
header so I can make use of your plain assertions. More recently I've  
been writing test code that borrows the 'matcher' concept from  
hamcrest, so

?assertThrows(....)

looks more like

expect_that(fun() -> ... end, should_fail({throw, ExpectedData})).

This just returns 'true' or {failed, Reason} however, so I wrap it in  
a macro that uses eunit ?assert anyway! ;)

> Steve Davis wrote:
>> Almost, but significantly... not quite. No compile step.
>
> Hm, well, you've heard of this nifty thing called "make"?
> But agreed, it is an additional step.

Agree with this and also using an Emakefile can keep things simple  
too. Another reason I use common_test is that it automatically  
compiles your test modules for you and you don't need to even bother  
with an Emakefile:

erl -sname ct -pa ./ebin  -s ct_run script_start -s erlang halt -I  
include  -logdir ./test/logs -dir test -cover coverage.spec

All the business of identifying which modules contain tests (those  
that follow the <name>_SUITE convention or are listed in a test  
specification file), compiling them and so on, is done for me. Again  
this is why I'm slightly baffled that everyone thinks common_test is  
too complicated - it is the perfect complement to eunit IMO.




More information about the erlang-questions mailing list