簡體   English   中英

在 Eclipse 中使用 googletest:如何?

[英]using googletest in eclipse: how?

我已經下載了 google test,但現在我不知道如何將它鏈接到我在 eclipse 中的項目。 我應該將它添加為源文件夾嗎? 應該將它包含為 g++ 包含的庫嗎? 那么我該如何運行測試呢?

使用里加的優秀答案,這里是我如何讓它工作的總結:

  1. 在 Eclipse 中創建了一個新的 C++ 項目(我選擇了 Executable > Empty Project)
  2. 下載googletest 1.5.0解壓,然后運行./scripts/fuse_gtest_files.py . <project-dir>/contrib ./scripts/fuse_gtest_files.py . <project-dir>/contrib
  3. 回到 Eclipse,從發布構建配置中排除contrib目錄,並將<project-dir>/contrib到包含目錄(奇怪,我知道)
  4. 添加了一個src目錄並添加了一個名為Foo的類( Foo.h的內容見下文——我Foo.cpp留空)
  5. 在 Eclipse 中添加了一個test目錄,將其從發布構建配置中排除,將<project-dir>/contrib到包含目錄,並添加了新的源文件FooTest.cppAllTests.cpp (內容見下文)
  6. 構建並運行項目!

福.h:

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

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

AllTests.cpp:

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

以下是詳細步驟:

  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文件夾並選擇Properties > C/C++ Build > Settings > Tool Settings選項卡 > GCC C++ Compiler > Directories
  12. 單擊Add...按鈕,然后單擊Workspace...按鈕,然后選擇<project-name>/contrib並單擊OK添加目錄
  13. 再次單擊“確定”以接受您對構建設置的更改
  14. 右鍵單擊 Project Explorer 窗格中的項目並選擇New > Folder ,輸入src作為其名稱,然后單擊OK
  15. 右鍵單擊 Project Explorer 窗格中的src文件夾,然后選擇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文件夾,然后選擇New > Source FileAllTests.cpp添加到test文件夾,然后重復相同的步驟添加FooTest.cpp (內容見上文)
  19. 右鍵單擊FooTest.cpp並選擇Exclude from build... ,單擊Select All按鈕,然后單擊 OK
  20. 在 Project Explorer 窗格中右鍵單擊項目,然后選擇Properties > C/C++ Build > Settings > Tool Settings tab > GCC C++ Linker > Libraries ,然后單擊Add...按鈕,輸入pthread (googletest 需要),單擊確定添加庫,然后再次確定接受更改
  21. 按 Ctrl-b構建項目
  22. 按 Ctrl-F11運行項目
  23. 勝利!

步驟 1 安裝 Eclipse

如果機器上尚未安裝 Eclipse,請從 Eclipse 下載頁面 ( http://www.eclipse.org/downloads/ ) 獲取最新版本的 Eclipse IDE for C/C++ Developers。

如果 Eclipse 已安裝但僅適用於 Java,請按照以下說明下載 C++ 插件。

一種。 打開Eclipse,點擊Help->Install New Software

在此處輸入圖片說明

在 Work with: 框中,輸入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。 單擊下一步,同意這些聲明,然后單擊完成。

第 2 步下載 Cygwin

通過單擊 Cygwin 安裝頁面 ( http://www.cygwin.com/install.html ) 上的 setup-x86_64.exe 鏈接安裝 Cygwin。 運行后,按默認值單擊 Next,直到進入 Select Packages 窗口。

在此處輸入圖片說明

您將需要搜索並安裝兩個軟件包:gcc 和 make。

第一個搜索詞是 gcc。 搜索 gcc,然后打開 Devel 文件夾。 通過單擊“跳過”一詞標記以下要安裝的軟件包(然后它會更改為內部版本號,可能比此處描述的要高):gcc-core、gcc-g++ 和 libgcc1。

在此處輸入圖片說明

第二個搜索詞是 make。 在這里,我們只需要 Devel 包 make。

在此處輸入圖片說明

選擇這些后,單擊下一步進行安裝。

步驟 3 下載並構建 Google Test 項目

https://code.google.com/p/googletest/downloads/list下載最新版本的 GoogleTest,並將 zip 文件內容解壓到一個公共目錄中。 重要的是所有用戶都能夠訪問此目錄。

(注:以下命令使用make - GoogleTest的最后一個版本,它使用makehttps://github.com/google/googletest/releases/tag/release-1.8.1對於GoogleTest使用的未來版本。 cmake來代替。 )

要構建 Google 測試項目:

  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。 輸入以下值並單擊完成。

在此處輸入圖片說明

在 Project Explorer 中,右鍵單擊項目名稱並選擇 Properties。 在 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 folder 添加一個源文件夾。 稱之為 src。
  • 通過右鍵單擊 src 文件夾並選擇 New->Header File 添加頭文件。 調用這個文件 Counter.h。
  • 通過右鍵單擊 src 文件夾並選擇 New->Source File 添加一個源文件。 將此文件稱為 Counter.cpp。
  • 添加另一個源文件並將其命名為 Counter_Tests.cpp。

將下面的代碼復制並粘貼到相應的文件中:

計數器.h

class Counter { 
private: 
      int mCounter;
public:    
      Counter() : mCounter(0) {}  
      int Increment();    
};

計數器.cpp

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

int Counter::Increment() {    
      return mCounter++;
}

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

在項目菜單中選擇全部構建。 現在,要連接 GoogleTest 單元測試框架,請從“運行”菜單中選擇“運行配置”。 從該對話框中,選擇 C/C++ 單元並單擊新建按鈕。

在此處輸入圖片說明

在C/C++ Application下應該自動填寫這個項目名稱,如果沒有點擊Search Project選擇這個項目。 接下來,單擊 C/C++ 測試選項卡。 在 Tests Runner 下拉列表中,選擇 Google Tests Runner,然后單擊 Run 觀看魔術!

在此處輸入圖片說明

下面是結果的快照。 編寫更多代碼/測試后,您可以單擊以紅色突出顯示的按鈕以快速重新編譯並重新運行所有測試。

在此處輸入圖片說明

您不應將其添加到源文件夾中,而應創建單獨的文件夾。 這是為了避免您的生產代碼依賴於測試項目。 像這樣做

../ #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
  ...

我通常使用 google test 作為兩個文件,這很方便。 使用 gtest 發行版中的scripts/fuse_gtest_files.py來提取它們。 只有兩個文件,您可以將它們的編譯包含在您的測試項目編譯中,並具有簡單的項目結構。

在您的測試項目中指定包含目錄../contrib:../src:src 因此,您可以包含這樣的標題

測試/src/module1/class1Test.h:

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

// test class1 here
// ...

測試/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();
}

這是我針對 Eclipse 4.3 和 CDT 8.2 的解決方案,我覺得這比上面描述的要容易一些。

  1. 下載 gtest 並按照 readme.txt 中的描述進行安裝(在 linux 中使用 cmake 和 make)

  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 測試運行程序。

(7. eclipse gui 中可能會出現錯誤通知,如果是這種情況,重新索引項目可能會有所幫助)

我已經提供了您的解決方案,並且運行良好。 我可以說對於編譯 gtest 在 README 中不是很清楚。 文本。

我已經通過 cygwin 控制台運行了 /make 目錄中的 makefile。 就我而言,編譯器建議我不要找到 pthread 庫。 所以我修改了這條線

CXXFLAGS += -g -Wall -Wextra -pthread

並將其更改為

CXXFLAGS += -g -Wall -Wextra -lpthread

我得到的輸出是gtest_main.a 然后我將此文件重命名為 libgtest.a 並將其復制到C:\\cygwin\\lib directory

然后我將我的 eclipse 項目配置為使用 cygwin 並按照您的說法添加了 gtest 和 pthread ......並且它有效!

我希望它可以幫助某人

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM