3

我已经为我的应用程序创建了一个配置文件,如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选项不指向现有文件。无论如何,我无法找到解决方法。

4

1 回答 1

0

我现在创建了一个Makefile为我解决问题的方法:

SUBDIRS = ./apps/app1 \
    ./apps/app2 \
    ./apps/app3

all: compile

compile:
    rebar compile

test:
    for dir in $(SUBDIRS); do \
        mkdir -p $$dir/logs; \
        ct_run -dir $$dir -logdir $$dir/logs -pa deps/*/ebin -pa apps/*/ebin -erl_args -config rpm; \
    done

.PHONY: all compile test

现在我可以使用make test. 无论如何,如果有人知道我如何用钢筋做到这一点,请回答!

于 2015-05-11T20:21:34.130 回答