Ubuntu打开terminal
#Download Source
cd googletest-release-1.7.0
cmake -DBUILD_SHARED_LIBS=ON.
make
(参考来源 http://blog.csdn.net/jcjc918/article/details/52029455)
我们以测试一个阶乘函数为例,首先准备待测试源码,然后构建gtest程序
在新的terminal
#回到当前的用户根目录
cd
#新建文件夹 demo_test
mkdir demo_test
cd demo_test
#新建空白源文件
touch frac.h frac.cpp test_main.cpp CMakeLists.txt
Copy 到对应文件
#ifndef FRAC_H
#define FRAC_H
int frac(int nInput);
#endif
#include
#include"frac.h"
int frac(int x)
{
if(x < 0)
{
printf("Error Input. \n");
return 0;
}
int f = 1;
for(int i = 1; i <= x; i++)
{
f *= i;
}
return f;
}
#include "frac.h"
#include
//TEST 是 gtest的宏
TEST(Frac_test, input_negative){
EXPECT_EQ(0, frac(-1));
EXPECT_EQ(0, frac(-2));
EXPECT_EQ(0, frac(-5));
}
TEST(Frac_test, input_zero){
EXPECT_EQ(1, frac(0));
}
TEST(Frac_test, input_positive){
EXPECT_EQ(1, frac(1));
EXPECT_EQ(2, frac(2));
EXPECT_EQ(6, frac(3));
}
int main(int argc, char **argv) {
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
CMakeLists.txt的内容
cmake_minimum_version_required(2.8.3)
project(test_pro)
set(SRC_LIST test_main.cpp frac.cpp)
add_definition(-std = C++11)
set(CMAKE_CXX_STANDARD 11)
add_executable(test_exe SRC_LIST)
include_directories(/home/NAME/exercise/gtest_demo
/home/NAME/googletest-release-1.7.0/include)
target_link_libraries(test_exe
/home/NAME/googletest-release-1.7.0/libgtest_main.so
/home/NAME/googletest-release-1.7.0/libgtest.so)
然后,进入demo_test文件夹下,
mkdir build
cd build
cmake ..
make
./test_exe
(参考源自:https://github.com/google/googletest/blob/master/googletest/docs/Primer.md)
TEST()与TEST_F()可分别用于测试函数、类。
//构建TEST_NAME下的第一个测试sort1
TEST( , )
{
// For fatal or key thing, if error break
ASSERT_*(, actual_value);
//If error, continue
EXPECT_*(, a_v);
}
//*是待填的,常用:EQ(equal)NQ(not equal) LT(less than) GT(great than) LE(less than or equal) ....
TEST( , )
TEST_F(FIXTURE)需要定义测试类
它要继承自::testing::test, 在类中放置一些要测试的类的实例,然后完成TEST_F。
在测试工程文件中
int main(int argc, char ** argv)
{
::testing::initGoogleTest(argc, argv);
//此宏将调用上面所有的TEST TEST_F
return RUN_ALL_TESTS();
}