我使用EUNIT模块并包含“eunit / include / eunit.hrl”。我用参数func / 0调用spawn / 1在测试函数中生成一个新进程,并在新进程中调用io:format / 1。参数func / 0是一个递归函数,如下所示:
func() ->
A = 2,
io:format("#######~p~n", [A]),
timer:sleep(1000),
func().
然后
10> bt:test().
All 2 tests passed.
ok
11>
=ERROR REPORT==== 19-Jun-2013::19:50:54 ===
Error in process <0.122.0> with exit value: {terminated,[{io,format,[<0.121.0>,"
#######~p~n",[2]],[]},{bt,func,0,[{file,"bt.erl"},{line,6}]}]}
出了什么问题,我该怎么办?
答案 0 :(得分:2)
如果我正确理解问题是你正在产生一个运行永无止境函数func()的进程,但是当EUnit进程终止时,它可能关闭标准输出。
这使得进程发出io:format()退出(引发异常)。实际上,ERROR REPORT正是提到了这个功能。
我的建议是审查产生永不结束的功能的必要性。
答案 1 :(得分:0)
写fun()的方式,它是无限的递归。基本上是这样的:
fun() ->
fun().
永远不会返回(继续运行),可能是EUNIT终止的原因。