我曾花费很多时间来解决这个问题,但一直没有成功。首先是我的配置:Ubuntu 16.04.1,qmake 3.0,cmake 3.5.1,共享的gtest和gmock库,版本1.8.0。我使用Qt Creator,以下是一个导致崩溃的最小程序示例。
main.cpp:
#include <iostream>
#include <gtest/gtest.h>
#include <gmock/gmock.h>
using namespace std;
class A {
void print() {
std::cout << "PRINT" << std::endl;
}
};
class B: public A {
MOCK_METHOD0(print, void());
};
TEST(MOCK, TEST) {
B b;
}
int main(int argc, char *argv[])
{
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
google_test.pro:
TEMPLATE = app
CONFIG += console c++11
CONFIG -= app_bundle
CONFIG -= qt
SOURCES += main.cpp
LIBS += -lgtest -lgmock
测试通过,但在程序结束时,我遇到了这个错误:
* 错误:在“/home/aminought/QtProjects/build-google_test-Desktop_Qt_5_7_0_GCC_64bit-Debug/google_test”中的双重释放或破坏(!prev):0x0000000001a51270 *
如何解决这个错误?非常烦人。
MOCK_METHOD0
放在模拟类的公共部分。 - Henrique Jung