我使用apt-get install libgtest-dev安装了gtest

我正在尝试检查是否有效。

所以我制作了简单的代码在Eclipse中进行测试。

但是有错误



相反,如果我将ATest类的继承更改为 protected ,则错误消失,但

另一个错误发生



怎么了 ?

#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();
}

最佳答案

安装libgtest-dev不会安装任何gtest二进制文件。
它只是在系统上安装googletest源程序包- header
/usr/include/gtest下,在/usr/src/gtest下,
在这里可以继续使用cmake或GNU autotools进行构建
如果你想。

在ubuntu/debian软件 channel 中没有googletest的二进制软件包
(或我所知道的其他地方)。通常的做法是
download the source archive
提取它并使用自己构建的二进制文件。的README源码包为构建和使用库提供了指导。

通常,执行以下操作的系统安装没有任何目的
像您一样完成源程序包。

您遇到的链接错误:

undefined reference to 'testing::Test::~Test()

与您的代码无关:发生是因为您与
链接libgtest,您无法链接它,因为它尚未安装
通过libgtest-dev,您还没有自己构建它。

当您以某种方式更改代码时,此链接错误将消失
引入编译错误,因为如果编译失败
则不会发生链接。

07-26 03:22