【发布时间】:2010-08-03 11:13:38
【问题描述】:
我正在尝试测试后台 shell 进程的结果(使用 exec() 运行)。为此,我需要 PHPUnit 断言等到进程结束。
我想知道最好的方法是什么?我是否应该将正在运行的进程的检查放在一个循环中,并使用带有非常小的参数的 sleep() 来等待它完成?
【问题讨论】:
我正在尝试测试后台 shell 进程的结果(使用 exec() 运行)。为此,我需要 PHPUnit 断言等到进程结束。
我想知道最好的方法是什么?我是否应该将正在运行的进程的检查放在一个循环中,并使用带有非常小的参数的 sleep() 来等待它完成?
【问题讨论】:
由于一天没有人回答,所以我要拍一张:
第一个冲动的答案是:“你不应该那样做”。它与goals of Unittesting 并不真正匹配(例如,运行该测试并不是很快)。
如果您正在为调用该脚本的类编写测试,那么您实际上并不是在测试一件事,而是两件事。调用命令行脚本的类和那个脚本是自己的,你可以模拟出外壳部分。
如果您只是想确保 exec 正常工作,我的第一个想法是构建您的测试,该方式不会将该 shell 进程生成为后台任务,而是作为前台任务并消除对一些“等待”解决方法。
希望对你有所帮助
【讨论】: