我正在尝试测试一个包含主管和两个(不同)工作人员的应用程序。我正在使用eunit,所以在我的设置和清理中,我得到了:
setup() ->
{ok, Pid} = foo_sup:start_link(),
Pid.
cleanup(Pid) ->
exit(Pid, kill).
foo_sup:start_link/0
定义为:
start_link() ->
supervisor:start_link({local, ?MODULE}, ?MODULE, []).
然而,当我的测试运行时,我得到{badmatch,{error,{already_started,<0.188.0>}}}
,这意味着我的主管仍在运行。
我如何:
答案 0 :(得分:7)
发送shutdown
信号,让主管杀死其子女并退出:
exit(Pid, shutdown).
您可能必须先取消流程与测试的关联。
监控进程,等待它退出:
Ref = monitor(process, Pid),
receive
{'DOWN', Ref, process, Pid, _Reason} ->
ok
after 1000 ->
error(exit_timeout)
end.