如何在所有eunit案例之前启动应用程序

时间:2014-11-24 06:50:12

标签: erlang otp rebar eunit

我的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配置文件,不知道为什么。

所以我认为有没有办法在所有测试模块之前启动应用程序?

3 个答案:

答案 0 :(得分:1)

听起来像是在进行远离unit testing想法的测试。也许,在这种情况下,您应该使用common test framework

答案 1 :(得分:1)

来自您使用的Erlang docs -config标志 (ERL_AFLAGS =" -config rel / pro / etc / app.config") 必须 ERL_AFLAGS =" -config app"

答案 2 :(得分:0)

看灯具:http://erlang.org/doc/apps/eunit/chapter.html#Fixtures

一种快速而肮脏的方法也可能是在第一个测试用例中添加类似的内容。

init_test() ->
  {ok, Apps} = application:ensure_all_started(myapp),