gpt4 book ai didi

c++ - 谷歌模拟析构函数

转载 作者:可可西里 更新时间:2023-11-01 16:18:10 27 4
gpt4 key购买 nike

我正在努力熟悉 Google 的模拟框架,这样我就可以更轻松地将一些 TDD 应用到我的 C++ 开发中。我有以下界面:

#include <string>

class Symbol {
public:
Symbol (std::string name, unsigned long address) {}
virtual ~Symbol() {}
virtual std::string getName() const = 0;
virtual unsigned long getAddress() const = 0;
virtual void setAddress(unsigned long address) = 0;
};

我想验证在删除实例时是否调用了析构函数。所以我有以下 MockSymbol 类:

#include "gmock/gmock.h"
#include "symbol.h"

class MockSymbol : public Symbol {
public:
MockSymbol(std::string name, unsigned long address = 0) :
Symbol(name, address) {}
MOCK_CONST_METHOD0(getName, std::string());
MOCK_CONST_METHOD0(getAddress, unsigned long());
MOCK_METHOD1(setAddress, void(unsigned long address));
MOCK_METHOD0(Die, void());
virtual ~MockSymbol() { Die(); }
};

注意:我在上面省略了包含守卫,但它们在我的头文件中。

我还没有达到实际测试任何东西的地步。我有以下内容:

#include "gmock/gmock.h"
#include "MockSymbol.h"

TEST(SymbolTableTests, DestructorDeletesAllSymbols) {
::testing::FLAGS_gmock_verbose = "info";
MockSymbol *mockSymbol = new MockSymbol("mockSymbol");
EXPECT_CALL(*mockSymbol, Die());
}

当我执行我的测试运行程序时,我的其他测试会按照我的预期执行并通过。但是,当执行上述测试时,出现以下错误:

SymbolTableTests.cpp:11: EXPECT_CALL(*mockSymbol, Die()) 调用段错误(核心转储)

在过去的几个小时里,我一直在谷歌上搜索并尝试不同的方法,但我知道有用。有人有什么建议吗?

最佳答案

我发现在我的构建配置中将 gtest_disable_pthreads 设置为 ON 可以解决问题。

关于c++ - 谷歌模拟析构函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16626961/

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