<div dir="ltr"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">But logger messages are not directly sent to the group leader, therefore<br>they are not captured by eunit and are logged in all cases. </blockquote><div><br></div><div>"...not captured by eunit and are logged in all cases". It appears that "all cases"<br>is the key here. Perhaps your tests are more complicated than mine cause I've<br>never had any such problems.<br><br>I sketch out a simple example and everything works as expected:<br>-module(mylib).<br><br>-export([addition/2, subtraction/2]).<br><br>-include_lib("eunit/include/eunit.hrl").<br>-include_lib("kernel/include/logger.hrl").<br><br>addition(X, Y) -><br>    ?LOG_NOTICE("Addition enter."),<br>    X + Y.<br><br>subtraction(X, Y) -><br>    ?LOG_NOTICE("Subtraction enter."),<br>    X - Y.<br><br>addition_test() -><br>    ?LOG_NOTICE("Testing addition."),<br>    ?assertEqual(addition(2, 3), 6).<br>    <br>subtraction_test() -><br>    ?LOG_NOTICE("Testing subtraction."),<br>    ?assertEqual(subtraction(6, 5), 1).<br>    <br>Output:<br>G:\Projects\_Erlang\mylib> rebar3 eunit<br>===> Verifying dependencies...<br>===> Analyzing applications...<br>===> Compiling mylib<br>===> Performing EUnit tests...<br>=NOTICE REPORT==== 10-May-2021::12:29:19.477000 ===<br>Testing addition.<br>=NOTICE REPORT==== 10-May-2021::12:29:19.499000 ===<br>Addition enter.<br>=NOTICE REPORT==== 10-May-2021::12:29:19.515000 ===<br>Testing subtraction.<br>=NOTICE REPORT==== 10-May-2021::12:29:19.515000 ===<br>Subtraction enter.<br>F.       <br>Failures:<br><br>  1) mylib:addition_test/0<br>     Failure/Error: ?assertEqual(5, 6)<br>       expected: 5<br>            got: 6<br>     %% eunit_proc.erl:337:in `eunit_proc:with_timeout/3`<br>     Output: <br>     Output: <br><br>Finished in 0.187 seconds<br>2 tests, 1 failures<br>===> Error running tests<br>    <br>    <br><br><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">пн, 10 мая 2021 г. в 11:13, Nicolas Martyanoff <<a href="mailto:khaelin@gmail.com">khaelin@gmail.com</a>>:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Stanislav Ledenev <<a href="mailto:s.ledenev@gmail.com" target="_blank">s.ledenev@gmail.com</a>> writes:<br>
<br>
>><br>
>> If I'm not mistaken, this is also the reason eunit tests do not capture<br>
>> logger messages, making it hard to understand what was logged by a<br>
>> specific failing test.<br>
><br>
> What do you mean by "eunit doesn't capture logger messages"?<br>
> Is it some specific case?<br>
> I have had some problems with capturing messages but it was my fault -<br>
> I misspointed the config file with logger_level set higher than the<br>
> category of my messages.<br>
> And another issue was with common_test.<br>
> You must enable verbose output to be able to see messages.<br>
<br>
Eunit introduces its own group leader for each test case, capturing<br>
printed messages, and displaying them in a small section associated with<br>
each failing test. This is really useful when trying to understand why a<br>
specific test failed.<br>
<br>
But logger messages are not directly sent to the group leader, therefore<br>
they are not captured by eunit and are logged in all cases. This is a<br>
problem because it is now really hard to understand what was logged<br>
(especially which errors) in each failing test.<br>
<br>
This is clearly a design issue: eunit was not taken into account when<br>
logger was introduced.<br>
<br>
I tried to work around it with custom log handlers in the past, but<br>
could never make it work, and I remember talking about it on #erlang,<br>
but the conclusion was that it was not fixable without patching eunit<br>
and/or logger.<br>
<br>
-- <br>
Nicolas Martyanoff<br>
<a href="http://snowsyn.net" rel="noreferrer" target="_blank">http://snowsyn.net</a><br>
<a href="mailto:khaelin@gmail.com" target="_blank">khaelin@gmail.com</a><br>
</blockquote></div>