我使用apt-get install libgtest-dev安装了gtest
我正在试着检查这是否有效。
因此,我为eclipse中的测试编写了简单的代码。
但也有错误,
未定义的对“Test::Test::~Test()”的引用 未定义的对“Test::Test::Test()”的引用
相反,如果我将ATest类中的继承更改为受保护,则错误将消失,但是
另一个错误发生
测试::测试是“ATest_AAA_Test”不可访问的基础
怎么了?
#include <iostream>
#include <gtest/gtest.h>
class A{
public:
int a;
A(int a){this->a = a;}
A(){}
~A(){}
int getA(){return a;}
void setA(int a){this->a = a;}
};
class ATest : public ::testing::Test{
public:
virtual void SetUp(){
a1 = A(1);
a2 = A(2);
a3 = A(3);
}
virtual void TearDwon(){}
A a1;
A a2;
A a3;
};
TEST_F(ATest, AAA){
EXPECT_EQ(1, a1.getA());
EXPECT_EQ(2, a2.getA());
EXPECT_EQ(3, a3.getA());
}
int main(int argc, char **argv){
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}发布于 2014-06-11 14:59:42
安装libgtest-dev不安装任何gtest二进制文件。它只需在/usr/include/gtest下的系统头和/usr/src/gtest下的源文件上安装googletest源代码包,如果您愿意,可以使用cmake或GNU构建它。
在ubuntu/debian软件通道(或我所知道的其他地方)中,没有用于googletest的二进制包。通常的做法是使用下载源代码存档,提取它并使用自己构建的二进制文件。源包中的README为构建和使用库提供了指导。
执行源包的系统安装通常没有任何用途,就像您所做的那样。
您遇到的链接错误:
undefined reference to 'testing::Test::~Test()与您的代码无关:它的出现是因为您没有链接libgtest,而您不能链接它,因为它不是由libgtest-dev安装的,而且您也没有自己构建它。
当您以引入编译错误的方式更改代码时,此链接错误将消失,因为如果编译失败,则不会发生链接。
发布于 2014-06-10 16:07:26
我知道这听起来很明显,但我的通灵调试技巧告诉我,在链接最后一个二进制文件时,您忘了在对象文件名之后添加-lgtest。
https://stackoverflow.com/questions/24145649
复制相似问题