发布时间:2024-04-25 12:01
gtest下载链接:Google-gtest
- 切换权限至root
- 执行命令下载gtest:git clone https://github.com/google/googletest.git
- 下载成功后切换至googletest目录
- 执行命令:cmake .
- make
如果此过程报错,可在CMakeLists.txt中添加如下语句再从第3步开始执行:SET(CMAKE_CXX_FLAGS “-std=c++11”)- 在lib目录下会生成如下文件:libgmock.a libgmock_main.a libgtest.a libgtest_main.a
- 执行以下命令,完成安装:make install
需要对如下程序进行gtest测试:
#ifndef _HEADER_H_
#define _HEADER_H_
// 计算阶乘
// 返回值:
// n < 0: 返回-1
// n == 0 || n == 1: 返回1
// n > 1: 返回阶乘结果
int factorial(int n);
// 判断 n 是否是素数
// 返回值:
// 是素数:true
// 不是素数:false
bool isPrime(int n);
#endif // !_HEADER_H_
#include "header.h"
int factorial(int n) {
if(n < 0) { return -1; }
if(n == 1) { return 1; }
int result = 1;
for(int i = 1; i <= n; ++i) {
result *= i;
}
return result;
}
bool isPrime(int n) {
if(n < 2) { return false; }
if(n == 2) { return true; }
for(int i = 2; i < n / 2; ++i) {
if(n % 2 == 0) { return false; }
}
return true;
}
#include
#include "header.h"
#include
namespace {
// header.h factorial 阶乘函数测试
/******************************************************************
* 说明:
* 1. TEST() - gtest的测试宏
* 2. FactorialTest - 测试套的名字
* 3. Negative - 测试用例名称
* 4. EXPECT_EQ、EXPECT_FALSE等是gtest提供的测试断言;例如:EXPECT_EQ(-1,factorial(-1))表示-1和factorial(-1)的值是相等的,如果最后的结果的确相等则成功,否则失败。
*******************************************************************/
TEST(FactorialTest, Negative) {
EXPECT_EQ(-1, factorial(-1)); // factorial
EXPECT_EQ(-1, factorial(-2));
EXPECT_EQ(-1, factorial(-3));
EXPECT_EQ(-1, factorial(-10));
EXPECT_EQ(-1, factorial(-2147483648));
}
TEST(FactorialTest, Zero) {
EXPECT_EQ(1, factorial(0));
}
TEST(FactorialTest, Positive) {
EXPECT_EQ(1, factorial(1));
EXPECT_EQ(2, factorial(2));
EXPECT_EQ(120, factorial(5));
EXPECT_EQ(3628800, factorial(10));
}
// header.h isPrime 判断是否是素数
TEST(PrimeTest, Negative) {
EXPECT_FALSE(isPrime(-1));
EXPECT_FALSE(isPrime(-100));
}
TEST(PrimeTest, ZERO) {
EXPECT_FALSE(isPrime(0));
}
TEST(PrimeTest, Positive) {
EXPECT_FALSE(isPrime(1));
EXPECT_TRUE(isPrime(2));
EXPECT_TRUE(isPrime(3));
EXPECT_FALSE(isPrime(100));
}
}
int main(int argc, char **argv) {
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
编译命令如下:g++ header_unittest.cc header.cc -lgtest -std=c++11 -lpthread -o unittest
#include
#include "header.h"
#include
namespace {
// header.h factorial 阶乘函数测试
/******************************************************************
* 说明:
* 1. TEST() - gtest的测试宏
* 2. FactorialTest - 测试套的名字
* 3. Negative - 测试用例名称
* 4. EXPECT_EQ、EXPECT_FALSE等是gtest提供的测试断言;例如:EXPECT_EQ(-1,factorial(-1))表示-1和factorial(-1)的值是相等的,如果最后的结果的确相等则成功,否则失败。
*******************************************************************/
TEST(FactorialTest, Negative) {
EXPECT_EQ(-1, factorial(-1)); // factorial
EXPECT_EQ(-1, factorial(-2));
EXPECT_EQ(-1, factorial(-3));
EXPECT_EQ(-1, factorial(-10));
EXPECT_EQ(-1, factorial(-2147483648));
}
TEST(FactorialTest, Zero) {
EXPECT_EQ(1, factorial(0));
}
TEST(FactorialTest, Positive) {
EXPECT_EQ(1, factorial(1));
EXPECT_EQ(2, factorial(2));
EXPECT_EQ(120, factorial(5));
EXPECT_EQ(3628800, factorial(10));
}
// header.h isPrime 判断是否是素数
TEST(PrimeTest, Negative) {
EXPECT_FALSE(isPrime(-1));
EXPECT_FALSE(isPrime(-100));
}
TEST(PrimeTest, ZERO) {
EXPECT_FALSE(isPrime(0));
}
TEST(PrimeTest, Positive) {
EXPECT_FALSE(isPrime(1));
EXPECT_TRUE(isPrime(2));
EXPECT_TRUE(isPrime(3));
EXPECT_FALSE(isPrime(100));
}
}
编译命令如下:g++ header_unittest_1.cc header.cc -lgtest -std=c++11 -lgtest_main -lpthread -o unittest
android 文字识别实现的,基于Android平台文字识别应用的设计与实现
Attention deep neural network for lane marking detection解析
EventBridge 在 SaaS 企业集成领域的探索与实践
[论文翻译] iCaRL: Incremental Classifier and Representation Learning
SpringCloud使用集中配置组件Config规避信息泄露
外文翻译 | 你以为你会用Math.random() ? 不,你不会……
SAP ABAP CDS view 视图的 Replacement 技术介绍
如何有效学习开源项目代码?,为什么技术类书籍很难看坚持看完?,换工作时,技术人员如何能够判断新入职的这家公司是否靠谱? 极客观点
『现学现忘』Git后悔药 — 30、版本回退git reset --hard命令说明