Erlang init_per_group 终止 gen_server
Erlang init_per_group terminates gen_server
普通测试 init_per_group/2
在 gen_server:start_link
开始时终止 gen_server。
但是可以用 gen_server:start
.
启动服务器
gen_server
可以在 init_per_suite/1
和 init_per_testcase/2
.
中使用任何这些方法(start
和 start_link
)启动
为什么无法在 init_per_group/2
和 gen_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
,并且退出原因不是 normal
而 gen_server
是不捕获退出,gen_server
进程以同样的退出原因退出。
另一方面,init_per_testcase
是运行和测试用例本身在同一个进程,所以不会出现这个问题。
普通测试 init_per_group/2
在 gen_server:start_link
开始时终止 gen_server。
但是可以用 gen_server:start
.
gen_server
可以在 init_per_suite/1
和 init_per_testcase/2
.
start
和 start_link
)启动
为什么无法在 init_per_group/2
和 gen_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
,并且退出原因不是 normal
而 gen_server
是不捕获退出,gen_server
进程以同样的退出原因退出。
另一方面,init_per_testcase
是运行和测试用例本身在同一个进程,所以不会出现这个问题。