windows下使用gtest

我是在window下使用clion来写c++的,最近学习了gtest,中间遇到了一些问题,记录一下。

整体目录

先看一下目录结构
在这里插入图片描述
两个测试case,前面就有运行的标志,直接点击就能运行

具体的代码

CMakeLists.txt

cmake_minimum_required(VERSION 3.14)
project(my_project)# GoogleTest requires at least C++11
set(CMAKE_CXX_STANDARD 11)include(FetchContent)
FetchContent_Declare(googletestURL https://github.com/google/googletest/archive/609281088cfefc76f9d0ce82e1ff6c30cc3591e5.zip
)
# For Windows: Prevent overriding the parent project's compiler/linker settings
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
FetchContent_MakeAvailable(googletest)enable_testing()add_executable(gtest_demogtest_demo_1.ccsample1.cc
)target_link_libraries(gtest_demogtest_main
)include(GoogleTest)
gtest_discover_tests(gtest_demo)

sample1.h


#ifndef GOOGLETEST_SAMPLES_SAMPLE1_H_
#define GOOGLETEST_SAMPLES_SAMPLE1_H_// Returns n! (the factorial of n).  For negative n, n! is defined to be 1.
int Factorial(int n);// Returns true if and only if n is a prime number.
bool IsPrime(int n);#endif  // GOOGLETEST_SAMPLES_SAMPLE1_H_

sample1.cc


#include "sample1.h"// Returns n! (the factorial of n).  For negative n, n! is defined to be 1.
int Factorial(int n) {int result = 1;for (int i = 1; i <= n; i++) {result *= i;}return result;
}// Returns true if and only if n is a prime number.
bool IsPrime(int n) {// Trivial case 1: small numbersif (n <= 1) return false;// Trivial case 2: even numbersif (n % 2 == 0) return n == 2;// Now, we have that n is odd and n >= 3.// Try to divide n by every odd number i, starting from 3for (int i = 3; ; i += 2) {// We only have to try i up to the square root of nif (i > n/i) break;// Now, we have i <= n/i < n.// If n is divisible by i, n is not prime.if (n % i == 0) return false;}// n has no integer factor in the range (1, n), and thus is prime.return true;
}

gtest_demo_1.cc

#include <iostream>
#include <gtest/gtest.h>
#include "sample1.h"int add(int lhs, int rhs) { return lhs + rhs; }//int main(int argc, char* argv[]) {
//    std::cout << "start gtest2222 demo \r\n" << std::endl;
//    ::testing::InitGoogleTest(&argc, argv);
//    return RUN_ALL_TESTS();
//}TEST(FactorialTest, ZeroABC) {EXPECT_EQ(2,1+1);EXPECT_EQ(5,1+4);
}TEST(FactorialTest, ZeroABC2) {EXPECT_EQ(1, Factorial(0));
}

代码已经看完了,单个测试case也可以跑完了,如果我想整体运行怎么办呢?
去掉gtest_demo_1里面main方法的注释。
在这里插入图片描述

命令行里运行

进入项目根目录
mkdir build
cd build
cmake ..
cmake --build .

运行完上面的命令,就能看到项目结构如下:
在这里插入图片描述
build文件夹里面有个debug文件,再进去就能看到gtest_demo.exe

使用make命令来构建

大家记住一点在windows下,其实本身并没有make这个命令,直接使用cmake也不会产生makefile文件。
如果我就是想用make命令呢?
第一步,先在C:\Program Files\mingw64\bin里面把mingw32-make.exe复制一份,重命名为make.exe
在这里插入图片描述
然后回到项目根目录,删除掉build文件夹里面的所有东西。

cd build
cmake .. -G "Unix Makefiles" 
make -j4

效果如下:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/291479.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL:通过官方mysql server,搭建绿色版mysql服务器(Windows)

1. 官网下载mysql server 下载mysql server的zip文件&#xff0c;地址&#xff1a; https://downloads.mysql.com/archives/community/ 解压后 2. 初始化数据库 运行cmd&#xff0c; 进入bin目录&#xff0c;运行 mysqld --initialize-insecureinitialize-insecure说明如…

储能安全事频发,汉威科技传感器及综合解决方案助力储能消防建设

近年来&#xff0c;储能赛道狂飙突进&#xff0c;已经成为我国以及美国、日本、澳大利亚、欧洲诸国的新兴产业。《“十四五”国家消防工作规划》特别提到&#xff0c;要积极防范新业态新材料新风险&#xff0c;其中包括新型储能设施。 储能系统是新型电力系统有效的调峰调频、平…

AcWing算法进阶课-1.9.1Dinic/ISAP求最小割

算法进阶课整理 CSDN个人主页&#xff1a;更好的阅读体验 原题链接 题目描述 给定一个包含 n n n 个点 m m m 条边的有向图&#xff0c;并给定每条边的容量&#xff0c;边的容量非负。 图中可能存在重边和自环。求从点 S S S 到点 T T T 的最小割。 输入格式 第一行包…

伪协议和反序列化 [ZJCTF 2019]NiZhuanSiWei

打开题目 代码审计 第一层绕过 if(isset($text)&&(file_get_contents($text,r)"welcome to the zjctf")){ echo "<br><h1>".file_get_contents($text,r)."</h1></br>"; 要求我们get传参的text内容必须为w…

Spring Security:从入门到精通,全方位指南

Spring Security 是 Spring 家族中的一个安全管理框架。相比与另外一个安全框架Shiro&#xff0c;它提供了更丰富的功能&#xff0c;社区资源也比Shiro丰富。 一般来说中大型的项目都是使用SpringSecurity 来做安全框架。小项目有Shiro的比较多&#xff0c;因为相比与SpringSe…

淘宝API:连接消费者与商家的桥梁

随着互联网的快速发展&#xff0c;电子商务已成为人们日常生活的重要组成部分。淘宝作为中国最大的电商平台之一&#xff0c;不仅为消费者提供了丰富的商品选择&#xff0c;还为商家提供了广阔的销售渠道。而淘宝API&#xff08;应用程序接口&#xff09;则是连接消费者与商家的…

YashanDB个人版体验总结

前言 YashanDB数据库具有多项功能特性。首先&#xff0c;它是一个分布式数据库&#xff0c;支持水平扩展&#xff0c;能够将数据分散到多个节点上&#xff0c;从而提高系统的可靠性和性能。其次&#xff0c;YashanDB数据库具备高可用性&#xff0c;支持主从复制和自动故障转移…

你以为出现NoClassDefFoundError错误会是什么原因?

你以为出现NoClassDefFoundError错误会是什么原因&#xff1f; 1、概述2、事情经过3、总结 1、概述 大家好&#xff0c;我是欧阳方超&#xff0c;可以关注我的公众号“欧阳方超”&#xff0c;后续内容将在公众号首发。 同样的错误&#xff0c;非一样的解决方式。NoClassDefFou…

2023 英特尔On技术创新大会直播 |AI小模型更有性价比

前言&#xff1a; 今年是引爆AI的一年&#xff0c;从幼儿园的小朋友到80岁的老奶奶都认识AI&#xff0c;享受AI带来的便捷&#xff0c;都在向市场要智能&#xff0c;但AI的快速发展离不开底层硬件设施的革新。 英特尔是全球知名的半导体公司&#xff0c;专注于计算机处理器和芯…

理论篇:什么是NPM以及为什么NPM如此重要

&#x1f4cc; NPM&#xff0c;全称是 Node Package Manager&#xff0c;NodeJS 包管理工具 当我们开始现代化前端项目开发时&#xff0c;总是会被告知需要提前安装NodeJS&#xff0c;而且NodeJS软件包不仅仅会在我们的开发设备上安装NodeJS运行环境&#xff0c;同时会附带NPM工…

Java修饰符排列规范,一个不常使用但有必要注意的小细节

你好呀&#xff0c;我是仨仨&#xff01; 今天在整理项目的时候&#xff0c;注意到这样一个变量&#xff1a; SonarLint 提示需要用 static 修饰&#xff0c;于是我顺手就在 final 后加了一个static&#xff0c;然而等 SonarLint 再次检查后&#xff0c;又出现了新的提示&…

Mybatis-Plus——03,CRUD改

CRUD改 一、CRUD——改update————————如觉不错&#xff0c;随手点赞&#xff0c;关注&#xff0c;收藏(*&#xffe3;︶&#xffe3;)&#xff0c;谢谢~~ 一、CRUD——改update Test//测试更新public void updateTest(){User user new User();user.setId(3L);//怎么改…