googlemock的EXPECT_CALL导致“未知文件:错误:测试正文中抛出代码0xc0000005的SEH异常”

时间:2012-12-28 10:09:22

标签: c++ visual-studio-2010 mocking googlemock

我是googlemock的新手。我目前的项目需要googlemock才能使用。我从谷歌帮助网站的gmock基础知识中学到了什么。但是,当我尝试在我的项目中实现相同时,它会引发SEH exception with code 0xc0000005错误。 我的项目有多个线程,其中一个线程调用RUN_ALL_TESTS 上面的代码会导致SEH exception

工具:VS2010,Windows 7

Try to mock the function of a class

using ::testing::Return;
using ::testing::Test;
using ::testing::NiceMock;

class OsInterfaceCPP
{  

public: 

    OsInterfaceCPP(void){};
    virtual ~OsInterfaceCPP(void){};
    virtual int add_test(int a, int b) = 0;
    int calladdtest(int aa, int bb)
    {
        return add_test(aa,bb);
    }
};  
class OsCPPApis : public OsInterfaceCPP 
{  
public: 
    OsCPPApis(void){};
    virtual ~OsCPPApis(void){};
    virtual int add_test(int aa, int bb)
    {
        return (aa+bb);
    }
};

class MockedOSCPPApis : public  OsCPPApis
{
public:
    MockedOSCPPApis(void){};
    virtual ~MockedOSCPPApis(void){};
    MOCK_METHOD2(add_test, int(int aaa, int bbb));
};


OSapiTestFunc::OSapiTestFunc(void){}

OSapiTestFunc::~OSapiTestFunc(void){}

void OSapiTestFunc::SetUp(){}

void OSapiTestFunc::TearDown(){}

void OSapiTestFunc::RunTests()
{
    int argc=0;
    char **argv = 0;
    ::testing::InitGoogleMock(&argc, argv); 

}

TEST_F(OSapiTestFunc, OS_Test1)
{

    OsCPPApis TestOscppapis;
    MockedOSCPPApis Testmockosapi;
    int a, b;
    a = 2;
    b = 5;
    bool test1var = true;
    EXPECT_CALL(Testmockosapi,add_test(a, b));

    TestOscppapis.add_test(5,3);
}

2 个答案:

答案 0 :(得分:4)

0xC0000005是“您访问的内存不存在”。我现在无法确切地看到代码中的确切位置。但那肯定是出了什么问题。您可能希望使用调试器运行并查看它认为出错的位置。

答案 1 :(得分:2)

我唯一想要成为(很可能)NULL指针访问的原因是

void OSapiTestFunc::RunTests()
{
    int argc=0;
    char **argv = 0;
    ::testing::InitGoogleMock(argc, argv); 
}

通常当从main()函数调用它时,至少argv永远不会为NULL,因为第一个参数总是包含可执行文件名。

<强>更新
请注意我的编辑argc如何通过!只需而不是地址