C++测试工具gtest linux下安装使用

19 篇文章 0 订阅
11 篇文章 1 订阅

下载安装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是否小于result2
  • ASSERT_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();
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值