【发布时间】:2015-08-01 04:58:56
【问题描述】:
我有一个使用套接字进行通信的无头应用程序。启动时,它会一直保持活动状态,直到发送一条消息告诉它退出(或者它崩溃,或者被杀死)。
当使用 Ruby 对该应用程序进行单元测试时,我需要启动进程,与它进行交互(通过套接字),然后终止它。
我认为我可以使用这种模式来做到这一点:
class TestServer < MiniTest::Unit::TestCase
def setup
@thread = Thread.new{ `#{MY_COMMAND}` }
end
def test_aaa
# my test code
end
def teardown
@thread.kill if @thread
end
end
但是,teardown 代码会杀死线程,但不会杀死它启动的进程。
我如何以以下方式启动该流程:
- 允许它在后台运行(立即将控制权返回给我的 Ruby 测试工具)
- 如果需要,允许我稍后强制终止进程。
我碰巧在 OS X 上进行开发,但如果可能的话,我希望有一个通用的解决方案,它适用于所有运行 Ruby 的操作系统。
【问题讨论】:
标签: ruby multithreading unit-testing process