2

通用测试以 .init_per_group/2启动时终止 gen_server gen_server:start_link。但是用 . 启动服务器是可以的gen_server:start

gen_server可以从 和 中的任何这些方法 (startstart_link)init_per_suite/1开始init_per_testcase/2

为什么不能用 gen_serverinit_per_group/2启动gen_server:start_link

4

1 回答 1

2

发生这种情况是因为init_per_group它在单独的进程中运行,就像每个测试用例一样,并且该进程以退出原因退出,该退出原因传达有关组初始化成功/失败的信息。来自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是在与测试用例本身相同的进程中运行,所以不会出现这个问题。

于 2016-04-18T13:05:31.300 回答