Да, общий тест сделает это.
Это урезанная версия стандартного набора тестов, который обеспечивает наш режим erlang emacs (вы можете использовать обычный erlang one или erlware one ):
-module(junk).
%% Note: This directive should only be used in test suites.
-compile(export_all).
-include("test_server.hrl").
%%
%% set up for the suite...
%%
init_per_suite(Config) ->
Config.
end_per_suite(_Config) ->
ok.
%%
%% setup for each case in the suite - can know which test case it is in
init_per_testcase(_TestCase, Config) ->
Config.
end_per_testcase(_TestCase, _Config) ->
ok.
%%
%% allows the suite to be programmatically managed
%%
all(doc) ->
["Describe the main purpose of this suite"];
all(suite) ->
[].
%% Test cases starts here.
%%--------------------------------------------------------------------
test_case(doc) ->
["Describe the main purpose of test case"];
test_case(suite) ->
[];
test_case(Config) when is_list(Config) ->
ok.
Есть 2 основных способа сделать это.
Сначала запустите gen_server в init_per_suite/1
, а затем проведите большое количество атомарных тестов, которые будут работать на этом долго работающем сервере, а затем разрушите gen_server в end_per_suite/1
. Это предпочтительный способ - ваш gen_server должен быть долговременным и постоянным во многих транзакциях, бла-бла ...
Другой способ - выполнить одноэлементный тест, запустить gen_server с init_per_testcase/2
и развернуть его в end_per_testcase/2