[erlang-questions] EUnit fixture: return of Setup

Ludovic Coquelle <>
Sat Nov 3 16:21:51 CET 2007


I'm discovering that EUnit is really powerful.
I'll be more careful next time with test generation/run function.
Thanks.

On 11/3/07, Richard Carlsson <> wrote:
>
> Ludovic Coquelle wrote:
> > I have some problem with the EUnit fixture {setup, Setup, Clearup,
> > Instanciator}.
> >
> > From the doc, I understand that the Instanciator should get the value
> > return by the Setup.
> > But in the following case, the test fail because assertion is "undefined
> > == foo".
> > Am I missing something?
> >
> > simple_init() ->
> >     foo.
> > simple_close(R) ->
> >     R.
> > simple_do(R) ->
> >     ?assert(R == foo).
> > simple_test_() ->
> >     {
> >         setup,
> >         fun simple_init/0,
> >         fun simple_close/1,
> >         fun simple_do/1
> >     }.
>
> It does get the value from Setup during the test phase, but there is a
> previous phase which tries to enumerate the tests, and that will pass
> a dummy value ('undefined') to avoid actually running the setup.
>
> Note that the name of your 'simple_do/1' function is misleading: since
> it takes a parameter, EUnit assumes that it is (as you said) an
> instantiator which should get the value from simple_init/0, and should
> *return a test descriptor*, not try to run a test.
>
> If you try the following, you will see what is happening:
>
> simple_do(R) ->
>   eunit:debug(R),
>   ?_assert(R == foo).  % note the underscore: return test, don't run it
>
> (simple_do/1 is run twice - the first time with R='undefined').
>
> Although EUnit is powerful and compact to write, I know that it
> can be hard to keep in mind whether you should currently be writing
> test-running code of test-generating code.
>
>     /Richard
>
>
> --
> "Having users is like optimization: the wise course is to delay it."
>    -- Paul Graham
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20071103/510f1b64/attachment.html>


More information about the erlang-questions mailing list