GoogleTest 使用Cmake实现gtest
来源:互联网 发布:网络聊天话题 编辑:程序博客网 时间:2024/05/18 03:26
GoogleTest(gtest)用于开发测试。
***
快速流程:
Ubuntu打开terminal
$ wget https://github.com/google/googletest/archive/release-1.7.0.tar.gz
$cd googletest-release-1.7.0
$cmake-DBUILD_SHARED_LIBS=ON.
$make
***
(设置参考 http://blog.csdn.net/jcjc918/article/details/52029455)
下面例子简单说明gtest的用法
在新的terminal
$ cd
$ mkdir demo_test
$ cd demo_test
$ touch frac.h frac.cpp test_main.cpp CMakeLists.txt
注释:
frac.h中code
#ifndef FRAC_H
#define FRAC_H
int frac(int nInput);
#endif
frac.cpp中code
#include<stdio.h>
#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;
}
test_main.cpp的code
#include "frac.h"
#include <gtest/gtest.h>
//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)
INCLUDE_DIRECTORIES(/home/NAME/exercise/gtest_demo /home/NAME/googletest-release-1.7.0/include)
ADD_EXECUTABLE(test_exe SRC_LIST)
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(<TEST_NAME> , <sort1>)
{
// For fatal or key thing, if error break
ASSERT_*(<expected_value>, actual_value);
//If error, continue
EXPECT_*(<e_v>, a_v);
}
//*常用的EQ(equal)NQ(not equal) LT(less than) GT(great than) LE(less than or equal) ....
TEST(<TEST_NAME> , <sort2>)
***********************************************
TEST_F(FIXTURE)需要定义测试类
它要继承自::testing::test, 在类中放置一些要测试的类的实例,
然后完成TEST_F
在测试工程文件中
int main(int argc, char ** argv)
{
::testing::initGoogleTest(argc, argv);
//此宏将调用上面所有的TEST TEST_F
return RUN_ALL_TESTS();
}
ASSERT或EXPECT的条件针对binary,还有单独给string的参考google prime, 另外,相对大小是有精度限制的,如果要精确比较浮点数,ASSERT可以选择NEAR;
可以设置跳过一些TEST, 在TEST_NAME前加DISABLE_,
在执行测试的command后面可加参数< --gtest-repeat=1000>即1000次测试,<--gtest-output="xml":<filepath>>即生成xml报告
https://www.ibm.com/developerworks/cn/aix/library/au-googletestingframework.html
- GoogleTest 使用Cmake实现gtest
- googleTest(gTest)的使用心得
- Googletest使用
- GoogleTest的使用01
- GoogleTest的使用
- gtest使用
- gtest使用
- GTest使用
- Linux下CMake工程中gtest&gmock的安装与使用
- C程序:使用 googletest 测试框架
- C++单元测试快速使用(googletest)
- Ubuntu16 下载、编译和使用googletest
- Gtest LLT代码实现
- gtest使用简单总结
- gtest的使用 (android)
- vs2012 中使用 gtest
- Gtest使用笔记
- Gtest使用笔记
- putty远程连接centos7的问题(time out)
- 学习笔记,LINUX常用指令
- 浮动的解释
- 为什么程序员工资如此的高?
- 准备工作
- GoogleTest 使用Cmake实现gtest
- 【量化小讲堂-Python&Pandas系列02】Windows下如何安装Python、Pandas
- CPSR 和 SPSR
- Eclipse配置Maven+创建Maven项目(三)
- 数据库连接查询时的注意事项
- 图文详解Windows下安装最新版Git
- RabbitMQ HelloWorld
- linux——lvm
- 一张图让你理清javascript中__proto__, prototype, 以及constructor之间的关系