Erlang init_per_group завершает gen_server
Общий тест init_per_group/2
завершает gen_server, когда он запускается с gen_server:start_link
, Но нормально запустить сервер с gen_server:start
,
gen_server
можно запустить любым из этих методов (start
а также start_link
) в init_per_suite/1
а также init_per_testcase/2
,
Почему нельзя запустить gen_server в init_per_group/2
с gen_server:start_link
?
1 ответ
Это происходит потому, что 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
выполняется в том же процессе, что и сам контрольный пример, поэтому эта проблема не появляется.