在eclipse中使用googletest:怎么样?

use*_*310 33 c++ eclipse googletest

我已下载谷歌测试,但现在我不知道如何将它链接到我在Eclipse中的项目.我应该将它添加为源文件夹吗?应该包含它作为g ++包含的库?那我该怎么办呢?

Jos*_*ver 39

使用Riga的优秀答案,以下是我如何使用它的总结:

  1. 在Eclipse中创建了一个新的C++项目(我选择了Executable> Empty Project)
  2. 下载googletest 1.5.0,解压缩并运行./scripts/fuse_gtest_files.py . <project-dir>/contrib
  3. 回到Eclipse,contrib从Release构建配置中排除目录,并添加<project-dir>/contrib到include目录(奇怪,我知道)
  4. 添加了一个src目录并添加了一个名为的类Foo(请参阅下面的内容Foo.h- 我Foo.cpp现在留空)
  5. test在Eclipse中添加了一个目录,将其从发布构建配置中排除,添加<project-dir>/contrib到包含目录,并添加了新的源文件FooTest.cppAllTests.cpp(参见下面的内容)
  6. 建立并运行项目!

foo.h中:

#ifndef FOO_H_
#define FOO_H_
class Foo {
public:
  virtual ~Foo();
  Foo();
  bool foo(void) { return true; }
};
#endif /* FOO_H_ */
Run Code Online (Sandbox Code Playgroud)

FooTest.cpp:

#include "gtest/gtest.h"
#include "Foo.h"
namespace {
  class FooTest : public ::testing::Test {
  protected:
    Foo foo;
  };
  TEST_F(FooTest, Foo) {
    ASSERT_TRUE(foo.foo());
  }
}
Run Code Online (Sandbox Code Playgroud)

AllTests.cpp:

#include "gtest/gtest.h"
#include "FooTest.cpp"
int main(int argc, char **argv) {
  ::testing::InitGoogleTest(&argc, argv);
  return RUN_ALL_TESTS();
}
Run Code Online (Sandbox Code Playgroud)

以下是详细步骤:

  1. 在Eclipse中,打开" 文件"菜单,然后选择" 新建" >" C++项目"
  2. 项目类型:可执行 > 空项目
  3. 工具链:Linux GCC
  4. 单击完成
  5. 打开终端并且 cd /tmp
  6. wget http://googletest.googlecode.com/files/gtest-1.5.0.tar.bz2
  7. cd gtest-1.5.0/
  8. ./scripts/fuse_gtest_files.py . <project-dir>/contrib
  9. 回到Eclipse,右键单击Project Explorer窗格中的项目文件夹,然后选择Refresh
  10. 在Project Explorer窗格中,右键单击该contrib文件夹,选择Exclude from build ...*,仅取消选中**Release框,然后单击OK.
  11. 右键单击该contrib文件夹,然后选择属性 > C/C++生成 > 设置 > 工具设置选项卡> GCC C++编译器 > 目录
  12. 单击添加...按钮,然后单击工作区...按钮,然后选择<project-name>/contrib并单击确定以添加目录
  13. 再次单击" 确定"以接受对构建设置的更改
  14. 在Project Explorer窗格中右键单击项目,选择New > Folder,输入src其名称,然后单击OK
  15. 右键单击srcProject Explorer窗格中的文件夹,选择New > Class,将其命名Foo,然后单击OK(参见上面的内容Foo.h; Foo.cpp可以保留原样)
  16. 在Project Explorer窗格中右键单击项目,选择New > Folder,输入test其名称,然后单击OK
  17. 按照上面的步骤添加<project-name>/contrib<project-name>/src包含目录到test目录
  18. 右键单击该test文件夹,然后选择新建 > 源文件以添加AllTests.cpp到该test文件夹,然后重复相同的步骤添加FooTest.cpp(参见上面的内容)
  19. 右键单击FooTest.cpp并选择" 从构建中排除...",单击"全选"按钮,然后单击"确定"
  20. 在Project Explorer窗格中右键单击项目,然后选择Properties > C/C++ Build > Settings > Tool Settings选项卡> GCC C++ Linker > Libraries,然后单击Add ...按钮,输入pthread(googletest需要),单击OK添加库,然后确定再次以接受更改
  21. 击中按Ctrl-B来构建项目
  22. 击中按Ctrl-F11运行项目
  23. 胜利!


run*_*run 27

步骤1安装Eclipse

如果计算机上尚未安装Eclipse,则从Eclipse下载页面(http://www.eclipse.org/downloads/)获取最新版本的C/C++开发人员Eclipse IDE .

如果已安装Eclipse但仅适用于Java,请按照这些说明下载C++插件.

一个.打开Eclipse并单击Help-> Install New Software

在此输入图像描述

湾 在"使用:"框中,键入http://download.eclipse.org/tools/cdt/releases/kepler.片刻之后,将填充"名称"框.选择以下组件:

  • CDT主要特性 - > C/C++开发工具
  • CDT主要特性 - > C/C++开发工具SDK
  • CDT可选功能 - > C/C++单元测试支持
  • CDT可选功能 - > C/C++单元测试支持源
  • CDT可选功能 - > C/C++ Visual C++支持

在此输入图像描述

C.单击Next,同意语句,然后单击Finish.

第2步下载Cygwin

单击Cygwin安装页面(http://www.cygwin.com/install.html)上的setup-x86_64.exe链接安装Cygwin .运行后,在默认值中单击"下一步",直到进入"选择包"窗口.

在此输入图像描述

您需要搜索并安装两个软件包:gcc和make.

第一个搜索词是gcc.搜索gcc,然后打开Devel文件夹.通过单击Skip一词标记以下包以进行安装(然后它将更改为内部版本号,可能高于此处描述的版本号):gcc-core,gcc-g ++和libgcc1.

在此输入图像描述

第二个搜索词是make.在这里,我们只需要Devel包make.

在此输入图像描述

选择这些后,单击"下一步"进行安装.

步骤3下载并构建Google Test项目

https://code.google.com/p/googletest/downloads/list下载最新版GoogleTest ,并将zip文件内容解压缩到公共目录中.所有用户都能够访问此目录非常重要.

要构建Google Test项目:

  1. 打开Cygwin(找到Cygwin的安装目录,然后双击Cygwin.bat).
  2. 将当前工作目录更改为解压缩的GoogleTest make目录: cd c:/<<yourpath>>/gtest-1.7.0/make/
  3. 建立项目: make
  4. 从gtest-all.o文件中创建一个归档库: ar -rv libgtest.a gtest-all.o

步骤4将Cygwin bin目录添加到计算机PATH变量中

按照此页面上的说明为您的Windows版本:http://www.java.com/en/download/help/path.xml,将Cygwins bin目录添加到计算机PATH环境变量中.(通常通过添加; C:\ cygwin64\bin到当前值的末尾).

步骤5创建一个使用GoogleTest的新项目

启动Eclipse并选择File-> New-> C++ Project.输入以下值,然后单击"完成".

在此输入图像描述

在"项目浏览"中,右键单击项目名称,然后选择"属性".在C/C++ Build下,将Builder类型更改为Internal Builder.

在此输入图像描述

在C/C++ Build下,选择Settings,然后单击Cygwin C++ Compiler下的Includes文件夹.单击顶部框中的"添加"按钮,然后浏览到GoogleTest包含文件夹.

在此输入图像描述

最后,在Cygwin C++ Linker文件夹下,选择Miscellaneous,然后单击Other objects下的Add图标.找到您在步骤3中构建的libgtest.a文件(它应该位于解压缩的gtest文件夹的make目录中).

在此输入图像描述

而已!现在你准备尝试了.

第6步编写一些使用GoogleTest的代码

  • 单击File-> New-> Source文件夹添加源文件夹.叫它src.
  • 通过右键单击src文件夹添加头文件,然后选择New-> Header File.将此文件称为Counter.h.
  • 通过右键单击src文件夹添加源文件,然后选择New-> Source File.将此文件称为Counter.cpp.
  • 添加另一个源文件并将其命名为Counter_Tests.cpp.

将以下代码复制并粘贴到相应的文件中:

Counter.h

class Counter { 
private: 
      int mCounter;
public:    
      Counter() : mCounter(0) {}  
      int Increment();    
};
Run Code Online (Sandbox Code Playgroud)

Counter.cpp

#include <stdio.h>
#include "Counter.h"

int Counter::Increment() {    
      return mCounter++;
}
Run Code Online (Sandbox Code Playgroud)

Counter_Tests.cpp

#include "gtest/gtest.h"
#include "Counter.h"

TEST(Counter, Increment) {
      Counter c;    
      EXPECT_EQ(0, c.Increment());
      EXPECT_EQ(1, c.Increment());
      EXPECT_EQ(2, c.Increment());
}

int main(int argc, char **argv) {    
      ::testing::InitGoogleTest(&argc, argv);
      return RUN_ALL_TESTS();
}
Run Code Online (Sandbox Code Playgroud)

在Project菜单中,选择Build All.现在,要连接GoogleTest单元测试框架,请从"运行"菜单中选择"运行配置".从该对话框中,选择C/C++ Unit并单击New按钮.

在此输入图像描述

它应该在C/C++ Application下自动填写这个项目名称,如果没有点击Search Project来选择这个项目.接下来,单击C/C++ Testing选项卡.在Tests Runner下拉菜单中,选择Google Tests Runner,然后点击Run以观看魔术!

在此输入图像描述

以下是结果的快照.编写更多代码/测试后,可以单击红色突出显示的按钮,快速重新编译并重新运行所有测试.

在此输入图像描述


Rig*_*iga 10

您不应将其添加到源文件夹,而是创建单独的文件夹.这是为了避免生产代码与测试项目的依赖关系.像这样做

../ #your project folder
Makefile
src/
  module1 #some module
  module2 #another module
build #tmp for build
dist #binaries 
contrib/
  gtest
  ...
test/ #your test project folder
  Makefile
  src/
    module1 #correspondent to main project's one
    module2 #correspondent to main project's one
  build
  dist
  ...
Run Code Online (Sandbox Code Playgroud)

我通常使用google test作为两个文件,这非常方便.使用scripts/fuse_gtest_files.pygtest发行版来提取它们.只有两个文件,您可以在测试项目编译中包含它们的编译,并具有简单的项目结构.

在您的测试项目中指定包含目录../contrib:../src:src.因此,您可以包含这样的标题

测试/ SRC /模块1/class1Test.h:

#include "gtest/gtest.h"
#include "module1/class1.h"

// test class1 here
// ...
Run Code Online (Sandbox Code Playgroud)

测试/ SRC/mainTest.cpp:

#include "gtest/gtest.h"
#include "module1/class1Test.h"
#include "module2/class2Test.h"
// include other tests you have
// ...

int main(int argc, char** argv) {
  ::testing::InitGoogleTest(&argc, argv);
  return RUN_ALL_TESTS();
}
Run Code Online (Sandbox Code Playgroud)


Bjo*_*lid 7

这是我对Eclipse 4.3和CDT 8.2的解决方案.我觉得这比上面描述的要容易一些.

  1. 下载gtest并按照readme.txt(使用cmake和make in linux)中的描述进行安装

  2. 转到"YourProject-> Properties-> C/C++ Build-> Settings-> GCC C++ Compiler-> Includes-> Include paths"并在gtest中添加include文件夹

  3. 转到"YourProject-> Properties-> C/C++ Build-> Settings-> GCC C++ Linker-> Libraries",将gtest文件夹添加为搜索路径并添加库"gtest"和"pthread"

(4.如果您在同一项目中进行测试,则排除来自发布版本的测试)

  1. 转到"运行 - >运行配置..."并创建新的C/C++单元运行配置

  2. 在主选项卡中将项目设置为项目,将C/C++应用程序设置为应用程序.在C/C++测试选项卡中将测试运行器设置为Google Test Runner.

(7.错误通知可能会留在eclipse gui中,如果是这种情况重新索引项目可能有帮助)