2017-01-19 3 views
0

У меня есть приложение Erlang, которое является службой REST. У меня есть файл relx и когда я запускаю:Erlang; запуск приложения в начале общего теста

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 пакета и сделать это тестирование?

КСТАТИ Я запускаю свои тесты с помощью

rebar3 ct 

ответ

1

ОК, я понял, способ сделать это (не уверен, что это лучший способ):

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

%tests that hit localhost:port.. 

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