c++ - 在全局 fixture 中使用系统 boost UTF

标签 c++ unit-testing boost fixture

我正在尝试在 Boost UTF 全局 fixture 中检查正在运行的服务器进程。 我正在通过在我的 fixture 构造函数中调用系统来执行此操作...

class MyTestFixture
{
public: 
    MyTestFixture(); 
    ~MyTestFixture() ;

};


MyTestFixture::MyTestFixture()
{

    int rc = system("pidof myserver > /dev/null");
    if ( rc != 0 )
    {
        cout << "myserver not running so cannot continue" << endl;
        fflush (stdout) ;
        sleep(10);
        exit(4) ;
    }

    cout << "fixture setup ok!" << endl ;
}

BOOST_GLOBAL_FIXTURE( MyTestFixture );


BOOST_AUTO_TEST_CASE( pgmiia_main_test1 )
{
// some test code...
}

当“myserver”运行正常时,一切正常,但当它运行不正常时,我就会崩溃。 它不会进入 if 部分并退出。 奇怪的是,如果我在没有运行 myserver 的情况下在 gdb 中运行它,它确实会像我预期的那样进入我的导出分支。

我对 Boost UTF 有点陌生。我正在使用动态链接执行此操作。 有什么想法吗?

乔恩

最佳答案

据我所知,如果 proc_name 未运行,则 pidof -s 'proc_name' 返回 0,否则返回 PID。由于 system 应该返回被调用进程的 retval,您实际上是在测试进程是否正在运行:rc != 0,而 rc == 0 测试进程是否未运行。不确定问题是否与 Boost 细节有关。

关于c++ - 在全局 fixture 中使用系统 boost UTF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11342776/

相关文章:

c++ - 使用 boost::asio 的 AF_NETLINK (netlink) 套接字

c++ - 在 windows 中构建 boost 的子集

c++ - 在仿函数的 c'tor 中搜索值

c++ - trie 数据结构并打印所有子字符串

unit-testing - 如何对 Groovy 脚本进行单元测试,在 Elasticsearch 中用于 _score 计算

java - 单元测试循环被执行多次

c++ - unique_ptr boost 等效?

c++ - 错误 : "The preLaunchTask ' C/C++: g++. exe 构建事件文件'以退出代码 1 终止”

c++ - 如何创建一个空垫子并在其上画线?

unit-testing - Clojure 相当于 Python doctest?