erlang - 当 ?_assertEqual 失败时显示完整的预期和值(value)信息

标签 erlang eunit

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

事实是,当此断言失败时,输出将缩写为“ ... ”,我想查看完整的输出,以便找出不同之处。

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

提前致谢!

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

can_do_something(SetupData) ->
    % ... some code ... 
    [?_assertEqual(Expected1, Actual1), ?_assertEqual(Expected2, Actual2)].

最佳答案

我能想到的在控制台中实际显示值的最佳方法是这样的:

Actual =:= Expected orelse ?assert(?debugFmt("~p is not ~p", [Actual, Expected]))
?debugFmt返回 ok ,这不是真的,所以断言总是会失败。

或者,要将其用作测试生成器,可以将整个内容放入 ?_assert :
?_assert(Actual =:= Expected orelse ?debugFmt("~p is not ~p", [Actual, Expected]))

关于erlang - 当 ?_assertEqual 失败时显示完整的预期和值(value)信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10952767/

相关文章:

erlang - 数据检索吞吐量 - ETS 查找与进程间消息传递

erlang - 默认进程标志

erlang - 在 Erlang 模块中包含 EUnit 测试是否被视为良好实践?

erlang - 如果被监控的进程在 handle_call 完成之前死亡,会发生什么?

erlang - 主管重启策略的名称有什么解释?

audio - 如何使用Erlang播放AIFF声音文件?

maven - Erlang EUnit 测试的 SonarQube 代码覆盖率

erlang - 如何不对 Rebar3 eunit 测试进行符号链接(symbolic link) priv 目录?

unit-testing - Erlang - Eunit 设置函数不运行

erlang - 为什么Eunit不要求导出测试函数?