二郎神;在常见测试开始时启动应用程序

时间:2017-01-19 15:35:41

标签: erlang

我有一个作为REST服务的Erlang应用程序。我有一个relx文件,当我启动时:

rebar3 release

我得到了一个可执行文件

./_build/default/rel/myapp/bin/myapp

当我启动时,服务启动,我可以在localhost:80上点击我的服务。

现在我正在尝试编写一个测试套件来测试一些API调用。在我的常用测试init_per_suite(Config)函数中,我想启动我的应用程序,例如:

-module(apitest_SUITE).
-include_lib("common_test/include/ct.hrl").
-export([all/0]).
-export([test1/1, init_per_suite/1, end_per_suite/1]).

all() -> [test1].

init_per_suite(Config) ->
    %LAUNCH MY APP HERE!!!
    %LAUNCHING ../../_build/default/rel/myapp/bin/myapp SEEMS WRONG TO ME
    [].

end_per_suite(Config) ->
    %KILL MY APP HERE!!!
    ok.

test1(Config) ->
    httpc:get("localhost:80"). %e.g.

从这个common_test套件启动我的版本并进行此测试的正确方法是什么?

BTW我正在使用

启动我的测试
rebar3 ct

2 个答案:

答案 0 :(得分:1)

好的,我想出了一种方法(不确定它是否是最佳方式):

init_per_suite(Config) ->
    {ok, _} = application:ensure_all_started(myapp),
    [].

%tests that hit localhost:port..

end_per_suite(Config) ->
    ok = application:stop(myapp).

答案 1 :(得分:0)

我有同样的问题。您的方法可以启动应用程序,但不能加载sys.config文件。如果应用程序依赖于此文件中的某些配置,它将无法启动。