Eunit超时不起作用

时间:2009-12-04 13:39:02

标签: unit-testing erlang

我正在尝试使用文件夹中的eunit运行所有单元测试,但似乎超时总是重置为5秒。

e.g。

模块:

-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 个答案:

答案 0 :(得分:6)

对我来说有意义:整个目录的超时可能与单个测试的超时时间无关。

我会像这样编写测试:

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

(添加了下划线以创建测试表达式而不是测试本身;它全部在eunit manual中。我认为不可能以任何其他方式在测试本身中指定超时。)