下载安装gtest
git clone https://github.com/google/googletest.git
cd googletest
mkdir build
cmake ..
make -j4
sudo make install
说明
ASSERT_TRUE(表达式)
:断言表达式是否为真ASSERT_FALSE(表达式)
:断言表达式是否为假ASSERT_EQ(result1,result2)
;断言result1和result2是否相等ASSERT_NE(result1,result2)
;断言result1和result2是否不相等ASSERT_LT(result1,result2)
;断言result1是否小于result2ASSERT_GT(result1,result2)
;断言result1是否大于result2
测试例子1(源代码来自这里)
#include <gtest/gtest.h>
#include <iostream>
int test_fun(int a) {
return a + 1;
}
// 单元测试
TEST(FunTest, HandlesZeroInput) {
EXPECT_EQ(1, test_fun(0));
}
int main(int argc, char **argv) {
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
CMakeList.txt(可以再clion下使用)
cmake_minimum_required(VERSION 2.10)
project(test)
set(CMAKE_CXX_STANDARD 11)
add_executable(test test.cc)
target_link_libraries(test gtest pthread)
(手动编译)
mkdir build
cmake ..
make -j4
测试例子2
//
// Created by liushuai on 18-8-16.
//
#include<iostream>
using namespace std;
#include<gtest/gtest.h>
int Abs(int x)
{
return x > 0 ? x : -x;
}
TEST(IsAbsTest,HandlerTrueReturn)
{
ASSERT_TRUE(Abs(1) == 1) << "Abs(1)=1"; //ASSERT_TRUE期待结果是true,operator<<输出一些自定义的信息
ASSERT_TRUE(Abs(-1) == 1) << "Abs(-1)=1";
ASSERT_FALSE(Abs(-2) == -2); //期待结果是false
ASSERT_EQ(Abs(1),Abs(-1));
ASSERT_NE(Abs(-1),0);
ASSERT_LT(Abs(-1),2);
ASSERT_GT(Abs(-1),0);
ASSERT_LE(Abs(-1),2);
ASSERT_GE(Abs(-1),0);
}
int main(int argc, char **argv) {
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
cmake文件
cmake_minimum_required(VERSION 3.10)
project(ex12)
set(CMAKE_CXX_STANDARD 11)
find_library(Gtest libgtest.a /usr/local/lib)
add_executable(ex12 test2.cc )
target_link_libraries(ex12 ${Gtest} pthread)
测试运行结果如下:
测试例子
#include <iostream>
#include <gtest/gtest.h>
using namespace std;
int sum_of_one1(int n)
{
int cnt = 0 ;
while(n!=0)
{
cnt++;
n = n&n-1;
}
return cnt;
}
int sum_of_one(int n)
{
int temp = 1;
int count =0;
while(temp<=n)
{
int and_result = temp&n;
if(and_result)
{
count++;
temp = temp<<1;
}
else
temp = temp<<1;
}
return count;
}
TEST(TestOneNums,HandlerTrueReturn)
{
// ASSERT_TRUE(sum_of_one1(1) == 1) << "sum_of_one1(1)=1"; //ASSERT_TRUE期待结果是true,operator<<输出一些自定义的信息
ASSERT_TRUE(sum_of_one1(15) == 4) << "sum_of_one1(15)=4";
ASSERT_TRUE(sum_of_one(8) == 1)<<"Result:"<<sum_of_one(8); //期待结果是false
ASSERT_EQ(sum_of_one(7),3);
ASSERT_NE(sum_of_one(-2),2);
ASSERT_LT(sum_of_one1(7),4);
ASSERT_GT(sum_of_one1(5),1);
}
int main(int argc,char **argv) {
int a = sum_of_one1(8);
cout<<a<<endl;
::testing::InitGoogleTest(&argc,argv);
return RUN_ALL_TESTS();
}