EUnit从测试模块输出调试信息

ska*_*tek 7 erlang dbg eunit

我们说我有一个名为的模块 example.erl

在本单元中,我使用以下构造进行调试:

%%% Switch debugging output on/off:
%-define(DBG(Str, Args), ok).
-define(DBG(Str, Args), io:format(Str, Args)).
Run Code Online (Sandbox Code Playgroud)

它帮助我将各种调试信息输出到Erlang shell:

?DBG("Function fun1 starting... ~n", [])
Run Code Online (Sandbox Code Playgroud)

但是,如果我打电话example.erlexample_tests使用example:test(),这个输出信息不会出现.

如何在EUnit测试期间将其显示出来?

UPD:我找到了一些相关信息,但我仍然不知道如何解决这个问题.

shi*_*ino 19

如您提到的页面中所述,您可以使用debugMsg或debugFmt.

?debugMsg("Function fun1 starting...")
Run Code Online (Sandbox Code Playgroud)

要么

?debugFmt("Function fun1 starting...", [])
Run Code Online (Sandbox Code Playgroud)

确保在模块文件中包含eunit的头文件.

-include_lib("eunit/include/eunit.hrl").
Run Code Online (Sandbox Code Playgroud)

如果要在分段中禁用调试宏,请在编译模块中定义NODEBUG.

  • 定义NODEBUG宏,例如`-define(NODEBUG,true).`.确保你定义它**之前**包括eunit.hrl, (4认同)