c++ - 在windows中使用gcc+gtest+mockcpp,mock根本不起作用

标签 c++ unit-testing gcc mocking googletest

当我以 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/

相关文章:

c++ - 如何获得没有 cpp 的头文件?

c++ - 引用 static_cast 的引用和指向 static_cast 指针的指针的成本

swift - XCUITest如何获取SkyFloatingLabelTextField中 float 标题的内容?

macos - 在 OS X Yosemite 上构建 GCC-4.9.2

c++ - 同时使多个指针为 NULL

c++ - Linux 的 fork 函数与 Windows 的 CreateProcess 相比——复制了什么?

C# 为对象列表创建 Mock Configuration.GetSection (“Section:SubSection” )

python - 我可以从不同的目录运行 django 测试 (manage.py) 吗?

linux - fatal error : pthread. h:没有那个文件或目录

gcc - 禁止将警告视为错误 (cc1.exe)