gpt4 book ai didi

c++ - 谷歌模拟类似乎没有实现

转载 作者:行者123 更新时间:2023-11-30 05:01:16 24 4
gpt4 key购买 nike

我是 google mock 的新手,我正在尝试模拟一个接口(interface),但不断收到架构 x86_64 undefined symbol 的链接器错误

这是我的简化代码:

我在 .h 文件中有以下内容:

namespace Mynamespace
{
class IMyInterface
{
public:
virtual ~ IMyInterface() {};

virtual void myFunction() = 0;

};
}

这在另一个 .h 文件中:

#include <gmock/gmock.h>
#include <IMyInterface.h>

namespace testing
{
class MyClassMock : public IMyInterface
{
public:
~ MyClassMock();
MyClassMock(int, int, int);

MOCK_METHOD0(myFunction, void());
};
}

这在我的测试用例 .cpp 文件中:

#include <gmock/gmock.h>
#include <gtest/gtest.h>
#include <IMyInterface.h>

namespace testing
{
TEST(MyClassMock, myFunction)
{
MyClassMock mcm(0,0,0);
}
}

你知道我做错了什么吗?非常感谢任何帮助!

干杯,西蒙

编辑:

不幸的是,模拟似乎仍然无法正常工作。在我添加这样的实现之后:

namespace testing
{
MyClassMock:: MyClassMock(int a, int b, int c)
{
}

MyClassMock::~ MyClassMock()
{
}
}

“myFunction”不会在我这样做时被调用

#include "MyClassMock.h"
#include <gmock/gmock.h>
#include <gtest/gtest.h>
using ::testing::AtLeast;
using namespace testing;

TEST(MyClassTest, canCallFunction)
{
MyClassMock mock(0,0,0);
EXPECT_CALL(mock, myFunction())
.Times(AtLeast(1));
}

返回:EXPECT_CALL(模拟,myFunction())预期:至少被调用一次实际:从未调用 - 不满意且活跃

最佳答案

您必须为 MyClassMock::MyClassMock(int, int, int) 提供实现和 MyClassMock::~MyClassMock() .


另一方面,您应该使用 ""而不是 <>当你#include你自己的标题。例如。 #include "IMyInterface.h"不是 #include <IMyInterface.h> .这样,编译器将在系统包含路径之前搜索当前目录。

关于c++ - 谷歌模拟类似乎没有实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50380307/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com