我已經下載谷歌測試,但現在我不知道如何將它鏈接到我的項目在日食。 我應該將它作爲源文件夾添加嗎?應該將它包含爲g ++包含的庫嗎?那我該如何運行測試呢?在eclipse中使用googletest:怎麼樣?
回答
使用Riga's excellent answer,這裏是我得到了它的總結工作:
- 創建在Eclipse
- 下載googletest 1.5.0,未解壓的一個新的C++項目(我選擇的可執行文件>的空項目),跑
./scripts/fuse_gtest_files.py . <project-dir>/contrib
- 早在Eclipse中,排除發佈版本的配置
contrib
目錄,並添加<project-dir>/contrib
到包括目錄(奇怪,我知道) - 增加了
src
目錄,並在Eclipse中添加了一個名爲Foo
類(請參閱下面的Foo.h
--I內容左Foo.cpp
空現在) - 增加了
test
目錄,從發佈版本配置排除它,添加<project-dir>/contrib
到包括目錄,並添加了新的源文件FooTest.cpp
和AllTests.cpp
(請參閱下面的內容) - 構建並運行該項目!
foo.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();
}
下面是詳細的步驟:
- 在Eclipse中,打開文件菜單,然後選擇新>C++項目
- 項目類型:可執行>空項目
- 工具鏈:Linux的GCC
- 點擊完成
- 開一個終端和
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
- 早在Eclipse中,在項目資源管理器窗格中的項目文件夾,單擊鼠標右鍵,然後選擇刷新
- 在Project Explorer窗格中,右鍵點擊在
contrib
文件夾中,選擇排除構建...*勾去掉只有**釋放複選框,然後單擊OK - 右鍵單擊
contrib
文件夾並選擇屬性>C/C++編譯>設置>工具設置標籤>GCC C++編譯器>目錄 - 點擊添加...按鈕,然後工作區...按鈕,然後SE LECT
<project-name>/contrib
並單擊OK添加目錄 - 點擊OK一次接受你更改構建設置
- 在Project Explorer窗格中右鍵單擊並選擇新>文件夾,進入
src
正如它的名字,然後點擊OK - 在Project Explorer窗格
src
文件夾中單擊鼠標右鍵,選擇新建>類,將其命名爲Foo
,然後單擊OK (見上爲Foo.h
內容;Foo.cpp
可以保留原樣)在項目資源管理器窗格中的項目 - 右鍵單擊並選擇新>文件夾,進入
test
正如其名,然後單擊OK - 按照上面的步驟添加
<project-name>/contrib
和<project-name>/src
爲包括目錄到test
目錄 - 右鍵單擊
test
文件夾,然後選擇新>源文件加AllTests.cpp
到test
文件夾,然後重複同樣的步驟添加FooTest.cpp
(參見上面的內容)上FooTest.cpp
- 右鍵單擊並選擇從構建...排除,點擊全選按鈕,然後OK在項目資源管理器窗格中的項目
- 單擊鼠標右鍵,然後選擇屬性>C/C++編譯>設置>工具設置標籤>GCC C++鏈接器>庫,然後單擊添加...按鈕,進入並行線程(由googletest需要),單擊OK添加庫,然後OK再次接受更改
- 命中按Ctrl-B建設項目
- 命中Ctrl-F11運行該項目
- 勝利!
你不應該將它添加到你的源文件夾中,單獨的文件夾來代替。這是爲了避免測試項目對生產代碼的依賴。像這樣做
../ #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
...
我通常使用谷歌測試作爲兩個文件,這是非常方便。使用gtest distribution中的scripts/fuse_gtest_files.py
來提取它們。只有兩個文件,你可以將它們的編譯包含在你的測試項目編譯中,並且具有簡單的項目結構。
在您的測試projectspecify包括目錄../contrib:../src:src
。 因此,你可以包括報頭這樣
測試/ src目錄/模塊1/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描述(使用cmake和在linux使)
轉到「YourProject->屬性 - > C/C++建設 - >設置 - > GCC C++反編譯>包括 - >包含路徑」並添加包括文件夾中GTEST
轉到 「YourProject->屬性 - > C/C++建設 - >設置 - > GCC C++鏈接器>庫」,加在GTEST文件夾搜索路徑並添加庫「GTEST」和「並行線程」
(4。如果在同一個項目測試,源排除發行版本測試)
進入「運行 - >運行配置...」並創建一個新的C/C++單元運行配置
在主選項卡中將項目設置爲您的項目並將C/C++應用程序設置爲您的應用程序。在C/C++測試選項卡中將測試運行器設置爲Google測試運行器。
(7。錯誤通知可以堅持圍繞在使用Eclipse GUI,如果是這樣的情況下,重新建立索引的項目可能會幫助)
第1步安裝Eclipse
如果Eclipse沒有在機器上安裝,然後得到從Eclipse下載頁面(http://www.eclipse.org/downloads/)獲取適用於C/C++開發人員的最新Eclipse IDE版本。
如果Eclipse已經安裝,但僅適用於Java,請按照這些說明下載C++插件。
a。打開Eclipse,然後單擊幫助 - >安裝新軟件
灣在處理中:輸入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的設置,x86_64.exe鏈接安裝頁面(http://www.cygwin.com/install.html)安裝Cygwin。運行後,通過默認值單擊下一步,直到進入「選擇軟件包」窗口。
您需要搜索並安裝兩個包:gcc和make。
第一個搜索項是gcc。搜索gcc,然後打開Devel文件夾。點擊跳過的單詞(它會更改爲內部版本號,可能高於此處描述的內部版本號),標記以下軟件包以進行安裝:gcc-core,gcc-g ++和libgcc1。
的第二查詢詞是做。在這裏,我們只需要Devel包裝。
一旦這些被選中,單擊下一步安裝。
步驟3下載並建立谷歌測試項目
下載從https://code.google.com/p/googletest/downloads/list GoogleTest的最新版本,以及zip文件內容提取到一個公共目錄。所有用戶都能夠訪問此目錄很重要。
要構建谷歌測試項目:
- 打開的Cygwin(找到Cygwin的安裝目錄,然後在Cygwin.bat雙擊)。
- 改變當前的工作目錄解壓的GoogleTest創建目錄:
cd c:/<<yourpath>>/gtest-1.7.0/make/
- 生成項目:
make
- 創建歸檔庫出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-一個新的項目 - >新建> C++項目。輸入下面的值並單擊完成。
在項目資源管理器,用鼠標右鍵單擊該項目的名稱,然後選擇屬性。在C/C++ Build下,將Builder類型更改爲Internal Builder。
在C/C++生成,選擇設置,然後在含下Cygwin的C++編譯器的文件夾。點擊頂部框中的添加按鈕,然後瀏覽至GoogleTest包含文件夾。
最後,在Cygwin C++鏈接器文件夾下,選擇雜項,然後單擊下的其他對象添加圖標。找到您在步驟3中創建的libgtest.a文件(它應該位於解壓縮的gtest文件夾的make目錄中)。
完蛋了!現在你準備好嘗試一下了。
步驟6編寫使用GoogleTest
- 通過點擊文件 - >新建 - >源文件夾添加一個源文件夾一些代碼。稱它爲 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();
};
Counter.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();
}
在Project菜單中選擇Build All。現在,要連接GoogleTest單元測試框架,請從Run菜單中選擇Run Configurations。在這個對話框中,選擇C/C++ Unit並點擊New按鈕。
應該填寫在C/C++應用程序自動將此項目的名稱,如果沒有就搜索項目單擊以選中此項目。接下來,點擊C/C++測試選項卡。在Tests Runner下拉菜單中,選擇Google Tests Runner,然後點擊Run觀看魔術!
下面是結果的快照。在編寫更多代碼/測試之後,您可以單擊紅色突出顯示的按鈕快速重新編譯並重新運行所有測試。
我有托盤的解決方案,它運行良好。我可以說對於編譯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,因爲你說...它的工作原理!
我希望它可以幫助別人
- 1. eclipse導入類怎麼樣
- 2. 怎麼樣,並在查詢中使用
- 3. 怎麼樣在python中?
- 4. ==和===在JavaScript中怎麼樣?
- 5. Eclipse/Netbeans平臺和插件架構(在.NET中怎麼樣?)
- 6. 在PHP中調用aspx怎麼樣?
- 7. #怎麼樣!工作,我怎樣才能使它適用於CoffeeScript?
- 8. 我怎麼.jar文件使用eclipse
- 9. 我怎麼可以使用Eclipse
- 10. 在GoogleTest中使用ASSERT和EXPECT
- 11. 怎麼樣IE11
- 12. 我怎麼可以這樣使用Hibernate
- 13. 使用git和rtc - rsync怎麼樣?
- 14. 使用nvarchar作爲外鍵怎麼樣?
- 15. 使用jQuery的Joomla模塊。 - 怎麼樣?
- 16. PHP中的password_hash()怎麼樣
- 17. NSSortDescriptor中文...怎麼樣?
- 18. 怎樣在我的Eclipse的Web應用程序中使用的項目從GitHub
- 19. phpunit-skelgen可以在phpstorm IDE中使用嗎?怎麼樣?
- 20. 在Final Year Project中使用ORM工具怎麼樣
- 21. 我怎樣才能使用什麼:=在VBA中like和multiple condition
- 22. 防止在JavaScript中使用某個函數?怎麼樣?
- 23. 是否可以在dataview.rowfilter中使用2個參數?怎麼樣?
- 24. 怎麼樣子句中使用的neo4jclient在windowform C#
- 25. 在Xcode中緩存圖像?怎麼樣?
- 26. 在enaml中嵌入pyqtgraph ...怎麼樣?
- 27. 怎麼樣在Android SQLite中多線程?
- 28. UTF-8在Python日誌中,怎麼樣?
- 29. Taglib在JSP中導入,怎麼樣?
- 30. 在iphone中灰顯視圖,怎麼樣?
最初,谷歌推薦使用庫鏈接,但後來他們改變了他們的建議,他們有很多的不好的經驗後。該庫是使用某些編譯器選項構建的。如果測試用例和軟件沒有使用相同的選項構建,那麼事情可能會出錯 - 無論是災難性的還是微妙的。 因此,現在他們建議將Gtest源代碼包含到每個測試用例中,並將其構建爲一體,而不是將Gtest作爲鏈接庫。請參閱https://code.google.com/p/googletest/wiki/FAQ#Why_is_it_not_recommended_to_install_a_pre-compiled_copy_of_Goog – Mawg 2015-08-18 10:04:49