Структурирование конфигурации для приложений в наборах Common Test - PullRequest
0 голосов
/ 16 декабря 2018

Я столкнулся с проблемой 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!

Как правильно это сделать?

...