Eunit timeout не работает

Я пытаюсь запустить все модульные тесты, используя eunit внутри папки, но кажется, что время ожидания всегда сбрасывается на 5 секунд.

например

Модуль:

-module(example).
-include_lib("eunit/include/eunit.hrl").

main_test() ->
    % sleep for 10 seconds
    ?assertEqual(true, begin timer:sleep(10000), true end).

Командная строка:

Eshell V5.7.3  (abort with ^G)
1> c(example).
{ok,example}
2> eunit:test({timeout, 15, example}).
  Test passed.
ok
3> eunit:test({timeout, 15, {dir, "."}}).
example: main_test (module 'example')...*timed out*
undefined
=======================================================
  Failed: 0.  Skipped: 0.  Passed: 0.
One or more tests were cancelled.
error

Как видите, бег {timeout, 15, example} работает но не {timeout, 15, {dir, "."}}, У кого-нибудь есть ключ?

1 ответ

Решение

Для меня это имеет смысл: время ожидания для всего каталога, вероятно, не связано с временем ожидания для отдельных тестов.

Я бы написал тест так:

main_test_() ->
    % sleep for 10 seconds
    {timeout, 15, ?_assertEqual(true, begin timer:sleep(10000), true end)}.

(Подчеркивание добавлено для создания тестового выражения вместо самого теста; все это в руководстве eunit. Я не думаю, что можно указать время ожидания в самом тесте любым другим способом.)

Другие вопросы по тегам