1

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

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

4

3 回答 3

1

unit testing听起来您执行的测试与想法相去甚远。也许,在这种情况下,您应该使用通用测试框架

于 2014-11-24T09:29:22.683 回答
1

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

于 2016-12-28T20:30:49.747 回答
1

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

一种快速而肮脏的方法也可能是添加这样的东西作为第一个测试用例。

init_test() ->
  {ok, Apps} = application:ensure_all_started(myapp),
于 2019-03-07T14:34:47.177 回答