Я столкнулся с проблемой Common Test и способа указания конфигурации для приложений, которые я тестирую.У меня есть несколько наборов тестовых наборов, где у каждого набора тестовых наборов есть модуль ct_hook для настройки некоторых вещей.
Способ настройки приложений, которые я собираюсь протестировать, состоит в том, чтобы вызвать application:load/1
, а затем * 1004.* прежде чем я позвоню application:ensure_all_started/1
.Для отдельных (наборов) тестовых наборов это работает хорошо.однако, когда я запускаю rebar3 ct
, он (естественно) последовательно запускает несколько наборов тестов, и если мне нужно настроить приложение, которое я собираюсь использовать в более позднем запуске, тогда будет слишком поздно для вызова application:set_env/3
если это приложение уже было загружено косвенно (как зависимость - или даже зависимость) в ct_hook более раннего пакета:
init/2
в first_ct_hook
:
% loads app_a, but also its dependency app_b and *app_b's* dependency app_z:
application:load(app_a),
application:set_env(app_a, database, my_db_config),
% …
% great success!
init/2
в second_ct_hook
:
application:load(app_b), % loads app_b (its dependency app_z is already loaded)
application:set_env(app_a, database, my_db_config),
application:set_env(app_z, important, my_important_config), % oh no! too late!
Как правильно это сделать?