我有一个作为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
答案 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文件。如果应用程序依赖于此文件中的某些配置,它将无法启动。