通用测试init_per_group/2
在使用gen_server:start_link
启动时终止gen_server。
但是可以使用gen_server:start
启动服务器。
gen_server
可以使用start
和start_link
中的任何一种方法(init_per_suite/1
和init_per_testcase/2
)启动。
为什么无法使用init_per_group/2
在gen_server:start_link
中启动gen_server?
答案 0 :(得分:2)
这是因为init_per_group
在一个单独的进程中运行,就像每个测试用例一样,并且该进程以退出原因退出,该原因传达有关组初始化成功/失败的信息。来自test_server:run_test_case_eval
:
exit({Ref,Time,Value,Loc,Opts}).
由于gen_server
与运行init_per_group
的流程相关联,并且由于退出原因不是normal
且gen_server
没有捕获退出,因此{{ 1}}进程以相同的退出原因退出。
另一方面,gen_server
在与测试用例本身相同的过程中运行,因此不会出现此问题。