当我以 MSVC 格式构建 mockcpp 库 mockcpp.lib 并在 MSVC 中构建我的单元测试项目时,它运行良好。
当我将 mockcpp 的 CMake 生成器指定为 Unix Makefile 时,将 native 编译器指定为 cygwin64/bin/gcc.exe 和 cygwin64/bin/g++.exe 并设置 -DMOCKCPP_XUNIT=gtest -DMOCKCPP_XUNIT_HOME=googletest-release/googletest,我在构建 mockcpp 后得到了 libmockcpp.a。
但是当我在 gcc 中构建我的单元测试项目时,mock 函数根本不起作用。我使用 GDB 对其进行调试,发现它仍然会遇到我模拟的 mult_num 函数。
使用gcc编译mockcpp时是否需要添加宏或其他选项?
谢谢。
示例测试代码:
#include <gtest/gtest.h>
#include <mockcpp/mokc.h>
int add_num(int a, int b)
{
return a + b;
}
int mult_num(int a, int b)
{
return a * b;
}
int add_mult(int a, int b)
{
int sum = add_num(a,b);
if (sum == mult_num(a,b))
{
return 0;
}
else
{
return 1;
}
}
TEST(add_mult, test001)
{
int ret;
MOCKER(mult_num)
.expects(once())
.will(returnValue(-1));
ret = add_mult(2, 2);
EXPECT_EQ(1, ret);
}
最佳答案
我也遇到过这个问题: 操作系统是Ubuntu 内核版本:3.13.0-107 g++版本为:5.4.0
出现这个问题的原因是编译时开启了编译优化,需要在编译选项中关闭优化。
g++ -00(第一个是字母O,第二个是数字0)
关于c++ - 在windows中使用gcc+gtest+mockcpp,mock根本不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44304596/