我正在编写一个单元测试,其中生成一个(相当冗长的)二进制文件,我想断言生成的二进制文件等于我期望生成的二进制文件.我通过" rebar eunit " 运行eunit .
事情是,当这个断言失败时,输出被" ...... "消除,我想看到完整的输出,所以我可以发现差异在哪里.
我现在使用" ?debugFmt() "作为临时解决方案,但我想知道是否有替代它(某个地方的配置选项或参数可以应用于" ?_assertEqual() "所以输出仅在断言失败时显示).
提前致谢!
编辑:由于legoscia的答案,我使用测试生成器包含一个测试样本,有多个断言:
can_do_something(SetupData) ->
% ... some code ...
[?_assertEqual(Expected1, Actual1), ?_assertEqual(Expected2, Actual2)].
Run Code Online (Sandbox Code Playgroud)
我可以想到的最好的方法就是在控制台中实际显示该值:
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)