我有一个其构造函数带有Boost函数的类,我想用Google Mock对其进行测试。以下代码显示了一个示例类以及我对其进行测试的尝试:

MyClass.h:

#include <boost/function.hpp>
class MyClass
{
public:
    MyClass(boost::function<void()> callback);
    void callCallback();
private:
    boost::function<void()> m_callback;
};

MyClassTest.cpp:
#include <gtest/gtest.h>
#include <gmock/gmock.h>
#include <boost/bind.hpp>
#include "MyClass.h"
class CallbackMock
{
public:
    MOCK_METHOD0(callback, void());
};

TEST(MyClassShould, CallItsCallback)
{
    CallbackMock callbackMock;
    MyClass myClass(boost::bind(&CallbackMock::callback, callbackMock));
    EXPECT_CALL(callbackMock, callback()).Times(1);
    myClass.callCallback();
}

尝试在Visual Studio 2008中编译MyClassTest.cpp会出现以下错误:



该错误源于包含boost::bind的行。用void callback(){}替换模拟方法可以消除编译错误(但也可以避免使用Google Mock,无法达到目的)。我要尝试做的事情无需修改测试的类就可以吗?

最佳答案

我认为这行是错误的:
MyClass myClass(boost::bind(&CallbackMock::callback, callbackMock));
最后一个参数应该是&callbackMock

关于c++ - 将Google Mock与boost::bind一起使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5584057/

10-11 06:26
查看更多