1

我正在学习 erlang,并且我创建了一个cache_server实现gen_server behaviour.

该模块负责创建ets tables并具有用于插入、查找等的 api。

我想为模块制作测试套件,并在一组测试中作为序列运行插入和查找的测试用例,因为第一个函数填充表和其他搜索插入的键。

我试图调用套件cache_server:start_link([])init_per_suite钩子函数,但在测试用例cache_server中,当我调用registered()函数时我看不到我的进程。

我得到

{noproc,{gen_server,call,[cache_server,{lookup,numbers,1}]}}

错误。

我还尝试将调用cache_server:start_link()从 init_per_suite 移至第一个测试用例,但在随后的测试用例中,该过程变得不可用。

当我使用 rebar3 shell 手动测试我的代码时,一切都按预期工作。

是否可以在通用测试测试套件中的测试用例之间共享一个命名的 gen_server 进程?

4

1 回答 1

0

尝试呼入cache_server:start_link()init_per_testcase由于此函数在每个测试用例之前执行,因此您还需要在end_per_testcase.

另一种选择是将所有cache_server相关的测试用例分组在一个组cache_server:start_link()中,然后调用init_per_group并停止该过程end_per_group

于 2020-12-02T17:39:46.267 回答