c – Google Mock析构函数

前端之家收集整理的这篇文章主要介绍了c – Google Mock析构函数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图熟悉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())被调用
分段故障(core dumped)

我花了最近几个小时搜索Google并尝试不同的事情,但要知道可用.有没有人有什么建议?

解决方法

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

猜你在找的C&C++相关文章