我正在用 C++ 编写套接字文件服务器,但我不知道如何将正确的单元测试放入我的 makefile 中。我的问题如下:
服务器启动后,将其端口号输出到标准输出。然后它会无限地聆听。客户端进程(我的测试套件)需要读取服务器的输出,然后在其自己的并行进程中启动。
我如何编写一个脚本,它可以 1. 并行运行两个程序,2. 允许我正确地从一个程序获取输出到另一个程序,3. 允许我以一种良好的格式存储输出以供以后查看。
答案1
我如何编写一个脚本,它可以 1. 并行运行两个程序,2. 允许我正确地从一个程序获取输出到另一个程序,3. 允许我以一种良好的格式存储输出以供以后查看。
就我个人而言,我也会用 C++ 编写测试工具,但无论哪种方式,如果您想进行这种多进程客户端服务器测试,您都需要fork()
.
在 bash 中,这是通过 实现的&
,所以相当于
pid_t pid = fork();
if (pid == -1) // error handling
else if (!pid) {
// Start server, plus some code for evaluating the exchange.
} else {
// Wait a second or two, then start client.
// Plus some code to feed server and evaluate exchange.
}
在 shell 中可能是这样的:
(
output=$(start_server)
# evaluate output
) &
sleep 2
start_client < input.txt
根据野兽的性质,shell 方法可能会像 C++ 方法一样笨拙或不可能完成。此外,使用相同的语言意味着您可以通过实例化您的类等而不是整个工具包和 kaboodle 来进行测试。这使得隔离问题变得更加容易,并且您可以包含真正的问题单元测试。