我试图熟悉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并尝试不同的事情,但要知道可用.有没有人有什么建议?
解决方法
原文地址:https://www.jb51.cc/c/115199.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。