谷歌模拟的EXPECT_CALL导致"unknown file:error: SEH exception with code 0xc0000005 thrown in the test body"
EXPECT_CALL of googlemock leads to "unknown file:error: SEH exception with code 0xc0000005 thrown in the test body"
我是googlemock新手。我目前的项目需要googlemock使用。我从谷歌帮助网站学习了gmock的基础知识。但是当我试图在我的项目中实现相同的时候,它抛出了SEH exception with code 0xc0000005
错误。我的项目有多个线程,其中一个线程调用RUN_ALL_TESTS上面的代码导致SEH exception
tools: 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);
}
0xC0000005是"您访问的内存不存在"。我现在看不出代码中发生这种情况的确切位置。但这就是问题所在。您可能希望使用调试器运行,看看它认为哪里出错了。
我认为(很可能)NULL指针访问的唯一原因是
void OSapiTestFunc::RunTests()
{
int argc=0;
char **argv = 0;
::testing::InitGoogleMock(argc, argv);
}
通常当从main()
函数中按预期调用时,至少argv
永远不会为NULL,因为第一个参数总是包含可执行文件名。
更新:
请注意我的编辑是如何通过argc
的!只是值而不是地址!
相关文章:
- "throw expression code" 1e7 >返回 d 是什么?投掷标准::overflow_error( "too big" ) : d;意味 着?
- Visual Studio Code - C++ Debugger 無法啟動
- Visual Studio Code "undefined reference to `WinMain@16'"
- VS Code "command":"make"与终端窗口中的命令行"make"不同
- 使用VS Code和CMake Tools运行自定义命令
- 修改 VS Code 中的默认C++代码段
- 如何配置Visual Studio Code以使用cygwin,cmake和gcc进行调试
- std::to_string - 'to_string' 不是 'std' 的成员 - Visual Studio Code 1.42.0
- VS Code C++:不准确的系统包括路径错误(wchar.h,boost/lambda/lambda.hpp)
- C++新手,想知道如何使用VS code 2019播放音频文件
- "Unable to start debugging. No process is associated with this object." - 在Visual Studio Code中使用GDB
- 如何在Visual Studio Code中重命名我的a.exe文件?
- C++ Visual Studio Code 的设置不起作用
- 以某种方式告诉编译器"Do not process line of code"
- 在VS Code中编译C / C ++时如何禁用自动创建EXE文件?
- 在类 12.exe 中0x7B37FF80 (ucrtbased.dll) 引发异常: 0xC0000005:访问冲突读
- 将Qt与Visual Studio Code(Windows)一起使用
- 0xC0000005:访问冲突写入位置0xCDCDCDCD动态分配错误
- 可视化 使用 VS Code 查找C++应用程序中的内存泄漏
- 谷歌模拟的EXPECT_CALL导致"unknown file:error: SEH exception with code 0xc0000005 thrown in the test body"