[英]using googletest in eclipse: how?
我已經下載了 google test,但現在我不知道如何將它鏈接到我在 eclipse 中的項目。 我應該將它添加為源文件夾嗎? 應該將它包含為 g++ 包含的庫嗎? 那么我該如何運行測試呢?
使用里加的優秀答案,這里是我如何讓它工作的總結:
./scripts/fuse_gtest_files.py . <project-dir>/contrib
./scripts/fuse_gtest_files.py . <project-dir>/contrib
contrib
目錄,並將<project-dir>/contrib
到包含目錄(奇怪,我知道)src
目錄並添加了一個名為Foo
的類( Foo.h
的內容見下文——我Foo.cpp
留空)test
目錄,將其從發布構建配置中排除,將<project-dir>/contrib
到包含目錄,並添加了新的源文件FooTest.cpp
和AllTests.cpp
(內容見下文)福.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();
}
以下是詳細步驟:
cd /tmp
wget http://googletest.googlecode.com/files/gtest-1.5.0.tar.bz2
cd gtest-1.5.0/
./scripts/fuse_gtest_files.py . <project-dir>/contrib
contrib
文件夾,選擇Exclude from build...*,僅取消勾選**Release框,然后單擊OKcontrib
文件夾並選擇Properties > C/C++ Build > Settings > Tool Settings選項卡 > GCC C++ Compiler > Directories<project-name>/contrib
並單擊OK添加目錄src
作為其名稱,然后單擊OKsrc
文件夾,然后選擇New > Class ,將其命名為Foo
,然后單擊OK (有關Foo.h
內容,請參見上文; Foo.cpp
可以保持原樣)test
作為其名稱,然后單擊OK<project-name>/contrib
和<project-name>/src
作為包含目錄添加到test
目錄test
文件夾,然后選擇New > Source File將AllTests.cpp
添加到test
文件夾,然后重復相同的步驟添加FooTest.cpp
(內容見上文)FooTest.cpp
並選擇Exclude from build... ,單擊Select All按鈕,然后單擊 OK步驟 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 。 片刻之后,名稱框將出現。 選擇以下組件:
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的最后一個版本,它使用make
是https://github.com/google/googletest/releases/tag/release-1.8.1對於GoogleTest使用的未來版本。 cmake
來代替。 )
要構建 Google 測試項目:
cd c:/<<yourpath>>/gtest-1.7.0/make/
make
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 的代碼
將下面的代碼復制並粘貼到相應的文件中:
計數器.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 的解決方案,我覺得這比上面描述的要容易一些。
下載 gtest 並按照 readme.txt 中的描述進行安裝(在 linux 中使用 cmake 和 make)
轉到“YourProject-> Properties-> C/C++ Build-> Settings-> GCC C++ Compiler-> Includes-> Include paths”並在gtest中添加include文件夾
轉到“YourProject-> Properties-> C/C++ Build-> Settings-> GCC C++ Linker-> Libraries”,添加gtest文件夾作為搜索路徑並添加庫“gtest”和“pthread”
(4.如果你在同一個項目中有測試作為源排除發布版本中的測試)
轉到“運行-> 運行配置...”並創建一個新的 C/C++ 單元運行配置
在主選項卡中將項目設置為您的項目並將 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.