在编写测试时,我发现自己编写了各种小的辅助函数来进行断言。我搜索了一个断言库,但没有找到任何东西。在我的测试中,我经常有这样的事情:
value_in_list(_Value, []) ->
false;
value_in_list(Value, [Item|List]) ->
case Value == Item of
true ->
true;
false ->
value_in_list(Value, List)
end.
test_start_link(_Config) ->
% should return the pid and register the process as my_app
{ok, Pid} = my_app:start_link(),
true = is_pid(Pid),
value_in_list(my_app, registered()).
我最终不得不编写一个完整的函数来检查 my_app 是否是一个注册进程。如果我可以调用类似的东西会更好assertion:value_in_list(my_app, registered())
or assertion:is_registered(my_app)
。
我来自 Ruby 背景,所以我讨厌为了做出一些断言而不得不用实用函数把我的测试弄得一团糟。如果我能这样做会更干净:
test_start_link(_Config) ->
% should return the pid and register the process as my_app
{ok, Pid} = my_app:start_link(),
true = is_pid(Pid),
assertion:value_in_list(my_app, registered()).
所以我的问题是:
- 为什么 Common Test 没有断言库?
- 是否有可能构建一个在所有测试期间都可以访问的第三方库?