在?_assertEqual失败时显示完整的预期值和值信息

mar*_*log 5 erlang eunit

我正在编写一个单元测试,其中生成一个(相当冗长的)二进制文件,我想断言生成的二进制文件等于我期望生成的二进制文件.我通过" rebar eunit " 运行eunit .

事情是,当这个断言失败时,输出被" ...... "消除,我想看到完整的输出,所以我可以发现差异在哪里.

我现在使用" ?debugFmt() "作为临时解决方案,但我想知道是否有替代它(某个地方的配置选项或参数可以应用于" ?_assertEqual() "所以输出仅在断言失败时显示).

提前致谢!

编辑:由于legoscia的答案,我使用测试生成器包含一个测试样本,有多个断言:

can_do_something(SetupData) ->
    % ... some code ... 
    [?_assertEqual(Expected1, Actual1), ?_assertEqual(Expected2, Actual2)].
Run Code Online (Sandbox Code Playgroud)

leg*_*cia 5

我可以想到的最好的方法就是在控制台中实际显示该值:

Actual =:= Expected orelse ?assert(?debugFmt("~p is not ~p", [Actual, Expected]))
Run Code Online (Sandbox Code Playgroud)

?debugFmt返回ok,这是不正确的,因此断言将始终失败。

另外,要将其用作测试生成器,可以将整个内容放入其中?_assert

?_assert(Actual =:= Expected orelse ?debugFmt("~p is not ~p", [Actual, Expected]))
Run Code Online (Sandbox Code Playgroud)