EUnit выводит отладочную информацию из проверенных модулей

Допустим, у меня есть модуль с именем example.erl

В этом модуле я использую следующую конструкцию для отладки:

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

Это помогает мне выводить различную отладочную информацию в оболочку Erlang:

?DBG("Function fun1 starting... ~n", [])

Но если я позвоню example.erl из example_tests с помощью example:test(), эта выходная информация не появится.

Как я могу сделать его видимым во время теста EUnit?

UPD: я нашел некоторую связанную информацию, но все еще нахожу не знаю, как решить проблему.


person skanatek    schedule 10.02.2012    source источник


Ответы (2)


Как описано на упомянутой вами странице, вы можете использовать debugMsg или debugFmt.

?debugMsg("Function fun1 starting...")

or

?debugFmt("Function fun1 starting...", [])

Убедитесь, что вы включили заголовочный файл eunit в файл вашего модуля.

-include_lib("eunit/include/eunit.hrl").

Если вы хотите отключить макросы отладки, например, при подготовке, определите NODEBUG в модулях компиляции.

person shino    schedule 11.02.2012
comment
?debugFmt работает нормально! Но как я могу включить / выключить его быстро? Раньше я использовал? DBG, определенный двумя строками (как в моем вопросе). Я пытался сделать следующее: -define(dbgFmt(Str,Args), ok)., но вывод все равно есть. - person skanatek; 11.02.2012
comment
определить макрос NODEBUG, например -define(NODEBUG, true).. Убедитесь, что вы определили его ДО, включая eunit.hrl, - person shino; 13.02.2012