googleTest Clion win/ubuntu cygwin测试环境搭建
软件
安装clion
windows安装cygwin
修改源为清华源:https://mirrors.tuna.tsinghua.edu.cn/help/cygwin/
Cygwin 镜像使用帮助
从 https://cygwin.com 上下载 setup-x86.exe 或 setup-x86_64.exe。
选择Install from Internet, 在”User URL”处输入以下地址:
https://mirrors.tuna.tsinghua.edu.cn/cygwin/
点击”Add”按钮, 然后选中”https://mirrors.tuna.tsinghua.edu.cn”, 点击”下一步”进行安装。
注意,该列表为可多选列表,注意把上面不需要的镜像点掉。
安装过程中选择 gcc-core、gcc-g++、cmake、make、gdb、binutils,以上所有项目都在 devel 文件夹下。
如果漏选就重新安装,安装是增量的形式,不会改变原来的安装包。
ubuntu
sudo apt-get install build-essential
mac
mac 应该都用,就不装了
安装GoogleTest
下载googleTest源码编译并安装到/usr/local中
git clone https://github.com/google/googletest.git
依次执行命令
cd googletest
mkdir build
cd build
cmake ..
make
make install
修改CMakeLists.txt文件
参考官方指南
win10/ubuntu:
cmake_minimum_required(VERSION 3.15)
project(main)
set(CMAKE_CXX_STANDARD 14)
link_directories(/usr/local/lib)
include_directories(/usr/local/include)
find_package(Threads REQUIRED)
set(LIBRARIES
gtest
gtest_main
pthread)
add_executable(${PROJECT_NAME}
main.cpp)
target_link_libraries(${PROJECT_NAME} ${LIBRARIES})
DivideAndConquer是自己建的文件夹。
新建一个测试用例: partitionGet.cpp:
//
// Created by arron on 2019/4/22.
// 分治法寻找最大值和最小值
//
#include <iostream>
#include <gtest/gtest.h>
void partitionGet(int start, int end, const int *meter, int *max, int *min);
TEST(partitionGet, partitionGet) {
int array[10] = {1, -2, 422, 23, 4, 1, 4, 5, 234, 0};
int max = 0;
int min = 0;
partitionGet(0, 9, array, &max, &min);
std::cout<<std::endl<<"max:"<<max<<std::endl;
std::cout<<"min:"<<min<<std::endl;
EXPECT_EQ(max,422);
EXPECT_EQ(min,-2);
}
void partitionGet(int start, int end, const int *meter, int *max, int *min) {
int i;
int localMax = 0;
int localMin = 0;
if (end - start <= 1) {
if (meter[start] > meter[end]) {
localMax = meter[start];
localMin = meter[end];
} else {
localMin = meter[start];
localMax = meter[end];
}
if (localMax > *max) {
*max = localMax;
}
if (localMin < *min) {
*min = localMin;
}
return;
}
i = start + (end - start) / 2;
partitionGet(start, i, meter, max, min);
partitionGet(i + 1, end, meter, max, min);
}
运行结果如图: