2010-12-02 108 views
3

我想单元测试客户端/服务器功能。客户端调用服务器,服务器调用回调函数。例如:如何测试回拨函数? (C++ Boost单元测试)

void CallBack() 
{ 
    BOOST_SUCCESS(); // test is successful if this is called 
} 

BOOST_AUTO_TEST_CASE(ConnectionTest_ClientCallback) 
{ 
    CallServer(); // server will do work and call CallBack() 
    sleep(20); 
    BOOST_FAIL("Server hasn't called CallBack() within specified time limit."); 
} 

但是,以上将无法正常工作,因为可以在任何测试期间调用CallBack()。有一个更好的方法吗?

回答

2

在回调函数设置一个变量:

void CallBack() 
{ 
    callBackCalled = true; 
} 

和测试,在测试:

BOOST_AUTO_TEST_CASE(ConnectionTest_ClientCallback) 
{ 
    callbackCalled = false; 
    CallServer(); // server will do work and call CallBack() 
    sleep(20); 
    if (callbackCalled) 
     BOOST_SUCCESS(); 
    else 
     BOOST_FAIL("Server hasn't called CallBack() within specified time limit."); 
} 

编辑:更好的解决方案通过kizzx2建议:

BOOST_AUTO_TEST_CASE(ConnectionTest_ClientCallback) 
{ 
    callbackCalled = false; 
    CallServer(); // server will do work and call CallBack() 
    sleep(20); 
    BOOST_CHECK_MESSAGE(callbackCalled, "Server hasn't called CallBack() within specified time limit."); 
} 
+0

你可能想说'BOOST_CHECK_MESSAGE(callbackCalled,“服务器没有在指定的时间限制内调用CallBack()。”)`而不是4行? – kizzx2 2010-12-09 15:24:45