Как экспортировать все функции только для общего теста?
Я пытался экспортировать все функции в модуле erlang для использования в общем тестовом SUITE, а не в модуле eunit. Пока это не сработало для меня. Я использую rebar для запуска SUITE, и я столкнулся с этим вопросом ( http://lists.basho.com/pipermail/rebar_lists.basho.com/2011-October/001141.html), который по сути именно то, что я хочу делать, но метод не будет работать для меня.
Я также добавил {plugins, [rebar_ct]}.
в rebar.config, но это не имеет значения. Я должен указать, что все мои тесты пройдены, когда я экспортирую функции нормально, но я хочу избежать этого. Любая помощь будет большой благодарностью.
2 ответа
Компилятор вызовет экспорт всех функций в модуле, если вы добавите в него следующее:
-compile(export_all).
Или вы можете сделать это на основе defs, например:
-ifdef(EXPORTALL).
-compile(export_all).
-endif.
Это будет экспортировать все, только если у вас есть {d, 'EXPORTALL', true}
в вашей конфигурации арматуры erl_opts
настройка, например что-то вроде:
{erl_opts, [
{d, 'EXPORTALL', true}
]}.
Если это не сработает, убедитесь, что у вас нет erl_opts
дважды в вашей конфигурации арматуры.
С помощью rebar3 вы можете определить в конфигурационном файле дополнительную опцию для компиляции для общего теста:
{ct_compile_opts, []}.
к ней вы можете добавить export_all, который будет доступен только для общего теста. не уверен, что он существует для арматуры.