Codeblocks下搭建gtest框架
Gtest需要先編譯才能使用。
一、編譯gtest
(1) 使用cmake-gui生成codeblocks工程
下載下來的gtest如下:
Gtest中有VS工程,如打開gtest-1.6.0\msvc目錄下有gtest.sln,這就是VS工程,可以用VS直接編譯。但是並沒有codeblocks工程,所以我們要先生成codeblock工程。
我們使用的是cmake-gui,安裝文件爲:
在圖上這兩個框中填入路徑,”Where is the source code”中填入的是gtest的路徑,”Where to build the binaries”中填入的是你要生成的codeblocks工程的路徑,如我在gtest路徑下新建目錄mybuild-codeblocks-mingw。
然後點擊界面下的configure,如下圖,選擇生成codeblocks的makefile,
勾選gtest_disable_pthreads,再點configure,結束後再點Generate,就會在你的路徑生成codeblocks工程,
用codeblocks打開,並build。
編譯gtest的目的是生成庫文件,libgtest.a,在後面的工程中使用該庫文件。
二、建立gtest工程
2.1 建立工程
此處選擇C++,
文件結構爲: _ source-
- code|
| - include
|
Reconstitution |
| _codetest
- ft_prj |
- testcases
|
- stub
如果要增加文件,選中工程,右鍵Add files即可。
2.2 工程配置
main.cpp中代碼爲:
#include <iostream>
#include "gtest/gtest.h"
using namespace std;
int main(int argc, char **argv)
{
testing::InitGoogleTest(&argc, argv);
RUN_ALL_TESTS();
system("PAUSE");
return 0;
}
test.cpp中代碼爲:
#include "gtest\gtest.h"
#include "demo.h"
struct TestFix:testing::Test{
void SetUp()
{
}
void TearDown()
{
}
};
TEST_F(TestFix,test1)
{
int ret=0;
ret = first(10);
EXPECT_EQ(11,ret);
ASSERT_EQ(11,ret);
};
其中first()函數爲code路徑下的一個測試函數,頭文件”demo.h”裏有這個函數的申明。
右鍵工程,選擇build options:
清除Compiler settings > Compile Flags下與-std=有關的複選框
點擊選項卡Compiler settings > Other options,在對話框中填寫-std=gnu++11
在Linker settings > Other linker options下填寫-lgtest
在linker settings->link libraries裏add之前編譯的庫文件。
在search directories->compiler裏增加gtest-1.6.0\include路徑,另外還要增加搜索自己代碼頭文件的路徑,如code->include,stub->include。
在search directories->linker增加庫文件libgtest.a所在的路徑。
最後選擇工程,右鍵build,即可編譯工程。運行:
以後在此基礎上,可以增加測試用例。