/*************************************************************
*使用gtest自动化测试
*
*************************************************************/
[依赖项]
 
eclips KEPLER
 
cygwin 
 
window xp
 
gtest库
 
cmd已是管理员权限
 
[gtest 搭建]
 
 a)、首先确定已成功安装好了eclips C++ 开发相关的工具,并确定g++的环境变量已能正常使用
 
 b)、打开eclips,新建两个项目,gtest(appliction),testlibs(static library),
 
 c)、解压gtest库,copy (include,src)到新建好的gtest目录中
 
 d)、排除库文件的编译 gtest库中的所有文件,选中gtest项目中的include文件夹,右键->属性-> c/c++build -> 选中exclude resouce form build,再用同样的方法去掉src文件夹的编译设置
 
e)、设置编译头文件,选中gtest项目->右键->属性->c/c++
  
1)、选中setting -> 选中tool settings -> 选中 cross g++ compiler -> 选中includes ->添加include paths 
   
"${workspace_loc:/${ProjName}/include}",
   "${workspace_loc:/${ProjName}}",
   "${workspace_loc:/testlibs}"
 
  2)、点击apply,再点ok
 
 f)、在gtest项目中新增加一个main.cc文件并输入下面的代码
 
//-------------------------------
#include "gtest/gtest.h"
#include "src/gtest_main.cc"
#include "src/gtest-all.cc"
//-------------------------------
 
 g)、选中gtest项目中的include文件夹,右键->属性->c/c++build -> 选中build steps 在post-build steps的command中输入"..\auto_test.bat"
 
h)、编写脚本
 
1)、向gtest项目中增加一个auto_test.bat文件
 
2)、输入脚本
 
@gtest.exe > out.log
 
 I)、在testlibs中写入目标代码(新建了一个class类的声明和定义)
 
test-class.h:
//code begin-----------------------
#ifndef TEST_CLASS_H_
#define TEST_CLASS_H_
 
class test_class{
public:
 int write();
};
 
#endif /* TEST_CLASS_H_ */
//code  end-------------------------
 
test-class.cc:
//code begin------------------------
#include "test-class.h"
 
int test_class::write(){
 return 10;
}
//code end------------------------
 
 J)、在gtest项目中编写测试用列(添加test.cc)
 
test.cc:
//------------------------
#include "gtest/gtest.h"
#include <test-class.h>
 
TEST(TESTCASE,TEST){
 test_class test;
 //test.write();
 EXPECT_EQ(10,test.write());
}
 
 
TEST(TESTCASE1,TEST1){
 FAIL(); //手动增加一个失败的测试
}
//------------------------
 
 k)正常编译gtest项目
 
 l)、打开eclips的console,就会看到测试输出的一些信息,那就是测试报告
 
console:
//------------------------
Running main() from gtest_main.cc
[==========] Running 1 test from 1 test case.
[----------] Global test environment set-up.
[----------] 1 test from TESTCASE
[ RUN      ] TESTCASE.TEST
[       OK ] TESTCASE.TEST (0 ms)
[----------] 1 test from TESTCASE (30 ms total)
 
[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (30 ms total)
[  PASSED  ] 1 test.
 
[性能测试 搭建]
 
a) 修改gtest项目属性
 
1)、选中gtest项目(alt+enter)->打开(c/c++ build 节点)-> setting-> cross g++ compiler 
 
2)、修改command 原为 g++ ,改为 g++ -pg
 
3)、打开(cross g++ linker) -> 修改command 原为 g++ ,改为 g++ -pg
 
b) 修改testlibs项目属性
 
1)、选中testlibs项目(alt+enter)->打开(c/c++ build 节点)-> setting-> cross g++ compiler 
 
2)、修改command 原为 g++ ,改为 g++ -pg
 
3)、打开(cross g++ linker) -> 修改command 原为 g++ ,改为 g++ -pg
 
c)、修改脚本auto_test.bat
 
::修改out的值就可以开启和关闭是否执行测试 0为开启用
//code begin-----------------
@set out=1
 
::gtest文件输出格式0 txt,1 xml
@set testOutType=0 
 
::test日志文件输出文件名
@set log="out.log";
@if %testOutType%==1 then  ( %log%="out.xml")
 
@if "%out%"==0 then goto lable1 else goto lable2 
 
:lable1
@echo "---------start unit test----"
@echo "---------unit test results----------">log
::@gtest.exe --gtest_output="xml:%log%"
@gtest.exe >log
@echo "---------Performance Test Results----------">>log
@if exist "gmon.out" (goto lable3) else (goto lable4)
:lable3
@(gprof gtest.exe gmon.out -b) >>log 
@echo "---------test complet----------">>log
@cat log
@echo "Full output has been output to a log file."
::open log file
@notepad log
 
:lable2
@echo "">log
goto exit;
 
:lable4
@goto exit;
 
::exit script
:exit
@exit(0)
//code end-----------
 
d)、打开consol 窗口,生成项目:选中项目 (ctrl+b),编译操作完成后会自己打测试报告
 
e)、查看性能测试报告
 
"---------Performance Test Results----------"
Flat profile:
 
Each sample counts as 0.01 seconds.
  %   cumulative   self              self     total           
 time   seconds   seconds    calls  Ts/call  Ts/call  name    
 19.16      1.40     1.40                             xis_data::set_data(xis_data const&)
 18.96      2.77     1.38                             xis_data_array::append(xis_data)
 
Call graph
 
 
granularity: each sample hit covers 4 byte(s) for 0.14% of 7.28 seconds
 
index % time    self  children    called     name
                                                 <spontaneous>
[1]     19.2    1.40    0.00                 xis_data::set_data(xis_data const&) [1]
-----------------------------------------------
                                                 <spontaneous>
[2]     19.0    1.38    0.00                 xis_data_array::append(xis_data) [2]
-----------------------------------------------
                                                 <spontaneous>
 
"---------end Performance Test Results----------"
 
f)、输出报告包括(单元测试、性能测试)
 
console:
//------------------------
Running main() from gtest_main.cc
[==========] Running 1 test from 1 test case.
[----------] Global test environment set-up.
[----------] 1 test from TESTCASE
[ RUN      ] TESTCASE.TEST
[       OK ] TESTCASE.TEST (0 ms)
[----------] 1 test from TESTCASE (30 ms total)
 
[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (30 ms total)
[  PASSED  ] 1 test.
 
"---------Performance Test Results----------"
Flat profile:
 
Each sample counts as 0.01 seconds.
  %   cumulative   self              self     total           
 time   seconds   seconds    calls  Ts/call  Ts/call  name    
 19.16      1.40     1.40                             xis_data::set_data(xis_data const&)
 18.96      2.77     1.38                             xis_data_array::append(xis_data)
 
Call graph
 
 
granularity: each sample hit covers 4 byte(s) for 0.14% of 7.28 seconds
 
index % time    self  children    called     name
                                                 <spontaneous>
[1]     19.2    1.40    0.00                 xis_data::set_data(xis_data const&) [1]
-----------------------------------------------
                                                 <spontaneous>
[2]     19.0    1.38    0.00                 xis_data_array::append(xis_data) [2]
-----------------------------------------------
                                                 <spontaneous>
 
"---------end Performance Test Results----------"
 
g)、关闭报告,测试结束 (一定要操作这一步,否则eclips会无法操作)

使用gtest自动化测试并给出性能测试结果(windows 版本,版本平台也可以使用,但并没有做完整的测试)的更多相关文章

  1. 使用AS编译jni文件无法编译出arm64-v8a,x86_64和mips64平台的.so文件的解决方法

    我用的插件版本是:classpath 'com.android.tools.build:gradle-experimental:0.4.0',AS集成和使用ndk编译项目参考官方demo:https: ...

  2. 《selenium2 python 自动化测试实战》(11)——selenium安装版本

    先和大家说一下selenium环境的问题,大家可以在cmd里先看一下自己的selenium版本: 回车,就可以安装了. 本来想和大家说如何跳过验证码进行登录的,结果好多朋友加我问我环境配置的问题,所以 ...

  3. gtest 自动化测试 部署

    1.部署 a)编译框架 1.1下载gtest库1.6.0 并解压到文件夹 "/user/{user}/gtest.1.6.0" 下载地址:https://code.google.c ...

  4. web自动化测试,弹出窗的操作

    弹出窗有两种: 1.alert弹窗 2.页面弹出窗 什么是alert弹窗呢,点击某一个事件后,会弹出一个弹窗,如下图所示,相信大家在测试中有遇到过,怎么操作它呢 1.1弹窗出现后,使用switch_t ...

  5. 【CefSharp】 禁用右键菜单 与 控制弹出窗口的方式(限版本39.0.0.1)

    这周没什么时间,一开始就在忙一些CefSharp的事情,Win10的研究就放了下来,CefSharp的资料挺少的,但好在是开源的,可以我们便宜的折腾.因为两个的内容都不多,我就合成一篇文章啦. 这还里 ...

  6. 解决Windows Server2008 R2中IE开网页时弹出阻止框(Windows Server2008网页无法打开的问题)

    相信使用Windows Server2008的朋友都遇到过这种情况,用IE打开网站时会弹出“Internet Explorer增强安全配置正在阻止来自下列网站的此应用程序中的内容”的对话框.如下图所示 ...

  7. WPF窗体视图中绑定Resources文件中字符串时,抛出:System.Windows.Markup.StaticExtension

    问题描述: 在Resources.resx定义了一个静态字符串字段Title,并在WPF窗体视图中绑定为窗体的标题: Title="{x:Static local:Resources.Tit ...

  8. 解决微信官方SDK给出1.4.0等版本没有预览文件(previewFile)等接口

    使用苹果手机测试 调用微信的js-sdk在系统中实现上传.预览附件的功能.在自己的手机测试通过后,直接丢给QA测试了 本以为相安无事了,没想到QA用安卓手机测的时候居然不得,使用的是下载下来的jwei ...

  9. loadrunner性能测试---添加windows多台压力机

    添加多台压力机 1.前置条件 1)保证压力机上都安装了loadrunner Agent,并启动,状态栏中会有小卫星.       2)添加的压力机与controller所在机器是否在同一个网段,建议关 ...

随机推荐

  1. pin

    sjhh@123456 Michael zhang zhangxiaocong_2011@yeah.net

  2. 九 DIP 依赖倒置原则

    首先看定义: 1.高层模块不依赖于低层模块,两者都应该依赖于抽象层 2.抽象不能依赖于细节,细节必须依赖于抽象 首先,模块是个抽象的概念,可以大到一个系统中的子系统作为一个模块,也可以是某个子系统中的 ...

  3. GCC特性之__init修饰解析 - kasalyn的专栏 - 博客频道 - CSDN.NET

    , GCC特性之__init修饰解析 - kasalyn的专栏 - 博客频道 - CSDN.NET.MathJax_Hover_Frame {border-radius: .25em; -webkit ...

  4. CodeForces Round #515 Div.3 A. Vova and Train

    http://codeforces.com/contest/1066/problem/A Vova plans to go to the conference by train. Initially, ...

  5. maven使用nexus服务器

    1.找到maven的安装路径,例如:C:\apache-maven-3.3.9 打开conf目录下的settings.xml文件 2.在<servers>节点下,配置 <server ...

  6. 关闭vscode打开新文件自动关闭预览文件功能

    经常碰到这个问题,我打开文件就是有用的,每次给我自动关闭了我还得去打开. 当然这个问题可以双击文件,接触那个文件的预览状态就可以解决了.不过还有一个更懒的方法,直接修改vscode配置就好了. // ...

  7. angular控制器controller里获取不到ng-model的值,获取为undefined

    所遇问题: html:ng-model=“test”, 但是在controller里打印的$scope属性里面并未发现test,控制台打印test为undefined,页面上{{test}}却可以正常 ...

  8. Linux Mint---安装docky

    这个安装的时候没啥难度,直接在软件中心安装一下就可以了,效果很赞的,linux下最棒的dock, 简洁大方,效果好! 只不有过一点需要注意,这个东东直接很上拖是添加不上去的 需要从/usr/share ...

  9. 理想中的SQL语句条件拼接方式

    背景 Orm用过一些,但处理增删改上面做的都不错.但是查询上跟我想要的效果总是差了一点.我想要的效果则是这样,基于某种命名规则进行传参,后台解析器知道命名规则即可知道它要查询什么样的数据. 谈谈我之前 ...

  10. bzoj 3289 Mato的文件管理 区间逆序对数(离线) 莫队

    题目链接 题意 给定\(n\)个数,\(q\)个询问,每次询问\([l,r]\)区间内的逆序对数. 思路 莫队+树状数组 注意离散化 Code #include <bits/stdc++.h&g ...