Erlang init_per_group 终止 gen_server

Erlang init_per_group terminates gen_server

普通测试 init_per_group/2gen_server:start_link 开始时终止 gen_server。 但是可以用 gen_server:start.

启动服务器

gen_server 可以在 init_per_suite/1init_per_testcase/2.

中使用任何这些方法(startstart_link)启动

为什么无法在 init_per_group/2gen_server:start_link 中启动 gen_server?

发生这种情况是因为 init_per_group 是 运行 在一个单独的进程中,就像每个测试用例一样,并且该进程退出的原因是传达有关 success/failure 组初始化的信息.来自 test_server:run_test_case_eval:

exit({Ref,Time,Value,Loc,Opts}).

由于 gen_server 链接到 运行 的进程 init_per_group,并且退出原因不是 normalgen_server 是不捕获退出,gen_server 进程以同样的退出原因退出。

另一方面,init_per_testcase是运行和测试用例本身在同一个进程,所以不会出现这个问题。