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 выполняется в том же процессе, что и сам контрольный пример, поэтому эта проблема не появляется.

Другие вопросы по тегам