eunit 测试超时

Posted

技术标签:

【中文标题】eunit 测试超时【英文标题】:eunit test for timeout 【发布时间】:2012-04-06 21:58:13 【问题描述】:

如何测试 gen_fsm 是否确实与 eunit 超时?

ok, GH = gen_fsm:start_link(myFSM, [], []),
//after 15 sec it should timeout if no messages received. 
//What must I write here to test it?

【问题讨论】:

【参考方案1】:

我相信这是一种解决方案:

ok, GH = gen_fsm:start_link(myFSM, [], []),
Ref = erlang:monitor(process,GH),
receive
    'DOWN', Ref, process, GH,  normal ->
        test_passed
after 
    15000 ->
        ?assert("FSM did not die.") % will always fail
end.

【讨论】:

我得到:xxx_tests: xxx_timeout_test...*超时* undefined ============================ =========================== 失败:0。跳过:0。通过:0。取消了一项或多项测试。错误 已解决,消息不是关于进程停止,而是关于测试本身。用 timout, 30, fun()-> test code 括起来。现在它可以工作了。

以上是关于eunit 测试超时的主要内容,如果未能解决你的问题,请参考以下文章

Erlang YAWS:如何测试一个简单的 REST Web 服务?

多个应用程序的 Eunit 错误

带EUnit的新模块

排毒自动化测试随机超时

为啥 Eunit 坚持我的函数返回 ok, value 而不是?

如何为 python unittest 指定测试超时?