开发工具

我和我的组员的都是使用的是大一老师推荐的codeblocks,所以,就愉快的决定了工具统一为codeblocks,语言C++。

测试单元

老师推荐的是JUnit和VSTS工具,但同学们从大一到现在最熟悉的还是codeblocks编程软件。既然的其他编程软件能加载测试工具,我想,codeblocks也行,百度后发现googleTest支持codeblocks(我就说会有的。。)。那么接下来,是具体的配置过程。

工具下载

1. googleTest官网上最新版为1.8.0版本的,但我试了并不能成功Build,所以我这里给出1.7版本的。这里还需要下载cMake用来生成cbp文件让codeBlocks识别。

工具下载地址:

https://pan.baidu.com/s/1uSu_TioPFOal6MYdM5Zp5A

2.分别解压两个文件后,进入cmake文件夹的bin下,运行cmake-gui。

在“where is the source code”中选择解压后的googletest文件路径,如我的路径为 C:/Users/Administrator/Desktop/googletest-release-1.7.0/googletest-release-1.7.0 ,

然后在“where to build the binaries ”可选择在解压路径下新建的一个文件夹路径,如,我在googletest-release-1.7.0/下新建了一个“codeblocks-mingw”文件夹,所以路径为

C:/Users/Administrator/Desktop/googletest-release-1.7.0/googletest-release-1.7.0/codeblocks-mingw

3. 然后点击Configure按钮,选择 codeblocks-MinGw Makefs,选择Use default native compiler,再点击Finish

4. 回到主界面配置完成后勾选 gtest_disable_pthreads,再点击Generate。

4.去到刚刚新建的codeblocks-mingw文件夹下,找到生成的gtest.cbp文件,双击就可进入codebloks中,然后点击齿轮按钮build成功即可。

---

配置codeblocks:

既想用C++11的新特征,又想顺利编译Google Test,你得用命令行参数-std=gnu++11,而不是-std=c++11。

1. 用codeblocks新建一个工程**

右键project,选择Build options...清除Compiler settings > Compile Flags下与-std=有关的复选框点击选项卡Compiler settings > Other options,在对话框中填写-std=gnu++11

(如果没有使用c++11新特性,上面两步可以省略)
在Linker settings > Other linker options下填写-lgtest
点击OK

2. 点击选项卡Search directories**

在Compiler子选项卡中Add一项,填写解压后的googleTest下的include文件夹路径,如我的为 C:\Users\Administrator\Desktop\googletest-release-1.7.0\googletest-release-1.7.0\include

在Linker子选项卡中Add一项,填写新建的文件夹路径,我的为 C:\Users\Administrator\Desktop\googletest-release-1.7.0\googletest-release-1.7.0\codeblocks-mingw

### 3. 点击OK


单元测试

然后我们可以新建工程测试自己的代码了。记得加上必要的头文件。面是我测试自己写的判断五子棋输赢的函数的结果

#include <iostream>
#include<cstdio>
#include<gtest/gtest.h>
#define WIN_Flag 100;
#define INTERUPT -100;
using namespace std;int ac[10][10]={   {0,0,1,0,0,0,0,0,0,0},         //0{0,0,-1,1,0,0,0,0,0,0},        //1{0,0,0,1,1,0,0,0,0,0},        //2{0,0,0,0,-1,-1,0,0,0,0},       //3{0,0,0,0,1,-1,0,0,0,0},        //4{0,0,0,1,0,1,-1,0,0,0},        //5{0,0,1,0,0,-1,0,0,0,0},{0,1,0,0,0,-1,0,0,0,0},{1,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0}};// 0 1 2 3 4 5 6 7 8 9int a[10][10]={0,0,1,0,0,0,0,0,0,0,         //00,0,-1,1,0,0,0,0,0,0,        //10,0,0,-1,1,0,0,0,0,0,        //20,0,0,0,-1,-1,0,0,0,0,       //30,0,0,0,0,-1,0,0,0,0,        //40,0,0,0,0,1,-1,0,0,0,        //50,0,0,0,0,-1,0,0,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};int CheckLine(int a[10][10],int i,int j,int direction ,int key,int& value)
{static int counter=1;
if(i>=0&&i<10&&j>=0&&j<10){counter++;cout<<counter<<endl;if(counter==1)switch(direction){case 3:if(j>=2&&key*a[i][j-2]<0)value--;break;case 4:if(i>=2&&j>=2&&key*a[i-2][j-2]<0)value--;break;case 5:if(i>=2&&key*a[i-2][j]<0)value--;break;}if(counter==5){if(key>0)a[i][j]=direction;else a[i][j]=-1*direction;counter=1;return WIN_Flag;}if(key*a[i][j]>0){switch(direction){case 3:if(key>0) a[i][j]=direction;else a[i][j]=-1*direction;CheckLine(a,i,j+1,3,key,value);break;case 4:if(key>0) a[i][j]=direction;else a[i][j]=-1*direction;CheckLine(a,i+1,j+1,4,key,value);break;case 5:if(key>0) a[i][j]=direction;else a[i][j]=-1*direction;CheckLine(a,i+1,j,5,key,value);break;case 6:if(key>0) a[i][j]=direction;else a[i][j]=-1*direction;CheckLine(a,i+1,j-1,6,key,value);break;}}else {value--;counter=1;return INTERUPT;}}}int FlagToWin(int a[10][10])
{   int i,j,value=2;for(i=0;i<10;i++)for(j=0;j<10;j++){switch(a[i][j]){case 1: case -1: if(CheckLine(a,i,j+1,3,a[i][j],value)==100)goto loop;if(CheckLine(a,i+1,j+1,4,a[i][j],value)==100)goto loop;if(CheckLine(a,i+1,j,5,a[i][j],value)==100)goto loop;if(CheckLine(a,i+1,j-1,6,a[i][j],value)==100)goto loop;break;case 3: case -3: if(CheckLine(a,i+1,j+1,4,a[i][j],value)==100)goto loop;if(CheckLine(a,i+1,j,5,a[i][j],value)==100)goto loop;if(CheckLine(a,i+1,j-1,6,a[i][j],value)==100)goto loop;break;case 4: case -4:if(CheckLine(a,i,j+1,3,a[i][j],value)==100)goto loop;if(CheckLine(a,i+1,j,5,a[i][j],value)==100)goto loop;if(CheckLine(a,i+1,j-1,6,a[i][j],value)==100)goto loop;break;case 5: case -5:if(CheckLine(a,i,j+1,3,a[i][j],value)==100)goto loop;if(CheckLine(a,i+1,j+1,4,a[i][j],value)==100)goto loop;if(CheckLine(a,i+1,j-1,6,a[i][j],value)==100)goto loop;break;case 6: case -6: if(CheckLine(a,i,j+1,3,a[i][j],value)==100)goto loop;if(CheckLine(a,i+1,j+1,4,a[i][j],value)==100)goto loop;if(CheckLine(a,i+1,j,5,a[i][j],value)==100)goto loop;break;}}loop:for(int p=0;p<10;p++){for(int q=0;q<10;q++)if(a[p][q]<0) cout<<"* ";else if(a[p][q]>0) cout<<"2 ";else cout<<"0 ";cout<<endl;}
if(i<10&&j<10&&a[i][j]<0){i=0;cout<<"—————————THE Black IS The WINNER!!!——————————————"<<endl;}
else  if(i<10&&j<10&&a[i][j]>0){i=1;cout<<"—————————THE White IS The WINNER!!!——————————————"<<endl;}
return i;
}
TEST (FlagToWin,HandleNoneZeroInput)
{EXPECT_EQ(1,FlagToWin(ac));//输出为1 白棋赢EXPECT_EQ(0,FlagToWin(a));//输出为0 黑棋赢EXPECT_EQ(1,FlagToWin(a));  //错误参数测试}
int main(int argc, char *argv[]){testing::InitGoogleTest(&argc,argv);return RUN_ALL_TESTS();cout<<FlagToWin(a);return 0;
}

这段代码可看到我共写了三个测试案例,其中两个正确,一个错误。

其中,

        EXCPECT_*  为失败时,案例继续往下执行;ASSERT_*   为失败时,直接在当前函数中返回。

“testing::InitGoogleTest(&argc, argv);” :gtest的测试案例允许接收一系列的命令行参数,因此,我们将命令行参数传递给gtest,进行一些初始化操作。gtest的命令行参数非常丰富,在后面我们也会详细了解到。

“RUN_ALL_TESTS()” :运行所有测试案例

截图为函数测试结果,绿色表示测试案例通过,错误案列情况由红色文本提示.

参考博客

:http://www.cnblogs.com/TenosDoIt/p/3412721.html

http://www.cnblogs.com/coderzh/archive/2009/04/06/1426755.html

转载于:https://www.cnblogs.com/firstblogtoliukehong/p/8604243.html

在Codeblocks下配置GoogleTest单元测试工具相关推荐

  1. 在CodeBlocks下配置GoogleTest单元测试框架

    环境准备 Windows 10 Code::Blocks 20.03 Google Test 1.7.0 CMake 3.11.0 编译GoogleTest 一.创建一个工作目录D:\gtest,将刚 ...

  2. 开源单元测试工具汇总

    开源单元测试工具/框架汇总 作为开源软件的爱好者,了解了单元测试这概念后,自然忍不住去找找有什么开源单元测试工具. 下面列出了30款1,不分先后顺序. 1. NoSQL的单元测试工具 NoSQLUni ...

  3. Visual Studio2005下配置及运行NUnit

    知道.net下有个NUnit,一直没有用它来写程序.今天测试了下试试,写点心得出来,一边写程序一边还得测试,浪费了很多时间精力.代码有了一定规模了,慢慢体会到单元测试的作用.用Nunit进行单元测试能 ...

  4. Ubuntu下codeblocks安装配置方法及opencv配置方法

    codeblocks是一种非常有名的开源IDE,在windows下最好用的IDE非Visual Studio莫属,但是在linux下,个人认为codeblocks是最好用的IDE,下面来讲一下我在ub ...

  5. Ubuntu下安装配置VNC远程工具

    现在Linux是非常火的  很多人喜欢用它,界面简单,操作容易,有很多图形化工具如WinSCP可以与Ubuntu进行文件的上传的与下载,Xshell就是如同控制ubuntu的终端一样,简单方便,不过要 ...

  6. codeblocks下libcurl的配置

    2019独角兽企业重金招聘Python工程师标准>>> 原帖在这里http://www.cnblogs.com/westfly/archive/2011/03/12/1982017. ...

  7. 在.NET开发中的单元测试工具之(1)——NUnit

    NUnit介绍 NUnit是一个专门针对于.NET来写的单元测试框架,它是xUnit体系中的一员,在xUnit体系中还有针对Java的JUnit和针对C++的CPPUnit,在开始的时候NUnit和x ...

  8. 【软件测试】2021年软件测试领域常用工具总结(1)-抓包工具与单元测试工具篇

    前言 大家好,我是洋子,作为一名测试开发/软件测试工程师, 在进行软件测试的过程中,会用到测试工具去辅助测试,以提高测试工作的效率.今天就给大家介绍一下2021年软件测试领域当中的最流行,最实用的工具 ...

  9. 3种最好用的JavaScript单元测试工具知多少

    如何对JavaScript程序代码进行单元测试?答案有很多,就如同世界上许多事情一样,总是存在诸多选择. 本篇文章重点描述几个当下比较受欢迎的JavaScript单元测试工具,也是笔者常用并且爱不释手 ...

  10. python逻辑与界面分离_一种数据与逻辑分离的Python单元测试工具

    一种数据与逻辑分离的Python单元测试工具 几个概念 TestCase TestCase是一个完整的测试单元,最小的测试执行实体,就是我们常说的测试用例. TestSuite 以某种特性将测试用例组 ...

最新文章

  1. Zookeeper源码分析:集群模式启动概述
  2. OPENGFILER存储柜
  3. Hdu 1384 Intervals
  4. 腾讯年度性爱报告被曝,最后一条数据我羞愧了!
  5. 示例:工具提示对象---享元模式应用
  6. [转]C++中extern C的含义
  7. struts2 mysql 乱码_struts2项目插入中文到mysql数据库乱码的解决方法
  8. [Sharepoint2007对象模型]第二回:Web应用程序服务(SPWebService)
  9. 错误请联系管理员文件 index.php,帝国CMS订单、反馈信息、投稿与留言发邮件通知管理员的方法...
  10. android辅助功能实现群发,Android 8.0实现发送通知的方法
  11. 哈佛大学单细胞课程|笔记汇总 (八)
  12. mybatis-generator 详细配置及使用,爬坑记录
  13. les物流执行系统_【精益运营】细化运营 精益求精 将“精准物流”落到实处...
  14. mybatis select 返回值long null_Mybatis框架(二)
  15. OBS录制的avi能够被imageJ打开吗?
  16. UE4中的GameMode、GameState、GameInstance
  17. 【Linux4.1.12源码分析】协议栈gro收包之TCP处理
  18. Linux mtd与ubi关系详解,ubi使用命令总结
  19. 微信和支付宝付款码条码规则
  20. oracle查表备注

热门文章

  1. android arial字体,Arial字体大小
  2. Python—2022 |已有文章汇总 | 持续更新,直接看这篇就够了
  3. 虚拟机安装BackTrack 5 的教程详解!
  4. 三级数据库技术思维导图
  5. 生物力学有限元Mimics/ANSYS
  6. 产品的国内版和国际版背后的思考
  7. 高质量解读《高性能mysql》——第1章 MySQL架构与历史
  8. 如何利用即时通讯工具进行营销
  9. PLSQL注册码,亲测,可用
  10. 淘宝客高手必备的14大WordPress插件