Erlang Common Test で init_per_suite, end_per_suite を使うときの注意点

Erlang Common Test ではテスト SUITE の開始と終了時に hook を指定する事が出来る。
これは xUnit にはよくある機能で、例えば開始時にリソースを取得し、テスト中は使い回す、終了時に解放みたいなことに使う。


ところが Erlang Common Test では init_per_suite と end_per_suite は別プロセスで呼び出されるという挙動をするので注意が必要だ。
例えば init_per_suite で gen_server:start_link して Config につっこんでも、 end_per_suite で Config から取り出した頃には(init_per_suiteプロセスが死んでいるので) unregister されてしまっているのである。
ドキュメントに記述は見当たらないがはまりやすいので要注意。