【发布时间】:2019-06-18 23:03:13
【问题描述】:
我正在尝试使用 gtest 测试一个 http 客户端。我想用我自己的 http 服务器测试这个客户端。我有一个小型 python 服务器。测试用例是客户端向这个 python 服务器发送各种请求。有没有办法在所有测试运行之前启动服务器并在测试后销毁该服务器?
我正在尝试使用 gtest 固定装置,如此处所示;通过在 SetUp 中创建一个新进程并在 TearDown 中终止它。但看起来这些调用是针对每个测试进行的。
class Base: public ::testing::Test {
public:
pid_t child_pid = 0;
void SetUp() {
char *cmd = "/usr/bin/python";
char *arg[] = {cmd, "./http_server.py", NULL};
child_pid = fork();
if ( child_pid == 0) {
execvp(cmd, arg);
std::cout << "Failed to exec child: " << child_pid << std::endl;
exit(-1);
} else if (child_pid < 0) {
std::cout << "Failed to fork child: " << child_pid << std::endl;
} else {
std::cout << "Child HTTP server pid: " << child_pid << std::endl;
}
}
void TearDown() {
std::cout << "Killing child pid: " << child_pid << std::endl;
kill(child_pid, SIGKILL);
}
};
TEST_F(Base, test_1) {
// http client downloading url
}
TEST_F(Base, test_2) {
// http client downloading url
}
【问题讨论】:
标签: c++ unit-testing googletest