我已经为我的应用程序创建了一个配置文件,如Erlang -- config中所述,该文件由多个子应用程序组成,每个子应用程序都有自己的 Common Test suites 目录。对于构建和测试,我使用 rebar,我的目录结构如下所示
.
├── apps
│ ├── app1
│ │ ├── ebin
│ │ └── src
│ ├── app2
│ │ ├── ebin
│ │ ├── logs
│ │ ├── rebar.config
│ │ ├── src
│ │ └── test
│ ├── ...
├── deps
├── rebar.config
├── apps.config
其中apps.config
包含所有应用程序的配置。当我启动我的虚拟机时,erl -pa deps/*/ebin -pa apps/*/ebin -config apps
一切正常。我已经添加{ct_extra_params, "-erl_args -config rpm"}.
到我的rebar.config
但当我运行时调用rebar ct
时发生错误。application:get_env/1,2
如果用钢筋无法做到这一点,如果有人能告诉我如何在那里完成它,也可以使用 make 代替。我知道我可以按照Erlang - External Configuration Date中的描述以某种方式将配置加载到 Common Test 中,但我认为如果我已经有了更简单的方法apps.config
。
更新: ct_run -dir apps/app1/test -pa deps/*/ebin -pa apps/*/ebin -erl_args -config rpm
也可以按预期工作。我猜问题是 rebar 在为每个应用程序运行测试时会更改 cwd,因此该-config rpm
选项不指向现有文件。无论如何,我无法找到解决方法。