我的 Erlang 项目由 rebar 管理,它分为不同的模块。
-pro
|-- rel
|-- src
|-- test
|--- module1_tests.erl
|--- module2_tests.erl
并且对于每个模块*_tests.erl,使用 Eunit Fixtures来设置环境。例如,
module1_test_() ->
{setup,
fun setup/0,
fun clean_up/1,
fun (SetupData) ->
[
test_function(SetupData)
]
end}.
setup() ->
pro:start(),
ok.
clean_up(_) ->
pro:stop().
Makefile 是:
test:
ERL_AFLAGS="-config rel/pro/etc/app.config" $(REBAR) compile eunit skip_deps=true
这里我遇到了一个问题,因为我在 test/ 中有很多测试模块,每个测试模块都会启动和停止整个执行流程的应用程序。有时启动应用程序会失败,提示找不到 app.config 配置文件,不知道为什么。
所以我认为有没有办法在所有测试模块之前启动应用程序?