SlideShare uma empresa Scribd logo
1 de 56
GTest  交流 与经验总结 张长荣
关于我 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
交 流 ,[object Object],[object Object],[object Object]
GTest  缘分 ,[object Object],[object Object],[object Object]
GTest  缘分 ,[object Object],分享:不要重复造轮子
GTest  缘分 ,[object Object],懒
GTest  缘分 ,[object Object],[object Object],分享: 不要让测试工作停下来,把框架维护的事情交给别人。
GTest  缘分 ,[object Object]
GTest  缘分 ,[object Object],[object Object],[object Object],[object Object]
《玩转 GTest 》 zhanyong.wan from Google
《玩转 GTest 》 ,[object Object],[object Object],[object Object]
开始说 Gtest ,[object Object],[object Object],XUnit
GTest 的特点 (1) ,[object Object],[object Object],[object Object],[object Object]
GTest 的特点 (2) ,[object Object],[object Object],[object Object],[object Object],[object Object]
GTest 的特点 (3) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
GTest  示例 ,[object Object],[object Object],[object Object],[object Object],[object Object]
XUnit ,[object Object],[object Object],[object Object],[object Object],[object Object]
XUnit  基础 分享:测试代码尽量简洁、清晰。
XUnit  基础 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
XUnit  基础 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
XUnit  基础 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
XUnit  基础 ,[object Object],[object Object],[object Object],分享: 尽量避免 Slow Tests 。
XUnit  基础 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
GTest  全局 Setup/TearDown ,[object Object],[object Object],[object Object],[object Object],[object Object]
GTest  全局 Setup/TearDown ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Setup 异常机制 ,[object Object],[object Object],[object Object],[object Object],HasFatalFailure()
XUnit  基础  -  断言 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
XUnit  基础  -  断言 ,[object Object],[object Object],[object Object],分享: 错误信息尽量详细和准确,尽量避免调试。
XUnit  基础  -  断言 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
XUnit  基础  -  断言 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
XUnit  基础  -  断言 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
XUnit  基础  -  断言 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
XUnit  基础  -  断言 ,[object Object],[object Object],[object Object],[object Object],[object Object]
XUnit  基础  -  断言 ,[object Object],[object Object],[object Object],int  Func() // Wrong { ASSERT_EQ(1, 2); } TEST(TestFoo, TestFoo) { Func(); ASSERT_EQ(1, 0); } void Func() { ASSERT_EQ (1, 2); } TEST(TestFoo, TestFoo) { Func(); ASSERT_EQ (1, 0); }
GTest -  参数化测试 ,[object Object],bool  IsPrime (int  n ) { ... } -1 0 1 2 13 99 ...
GTest -  参数化测试 ,[object Object],TEST(IsPrimeTest, TestAll) { EXPECT_FALSE( IsPrime(-1) ); EXPECT_FALSE( IsPrime(0) ); EXPECT_FALSE( IsPrime(1) ); EXPECT_TRUE( IsPrime(2) ); EXPECT_TRUE( IsPrime(13) ); ... }
GTest -  参数化测试 分享: 一个测试案例,理想情况下,只需要一个断言。
GTest -  参数化测试 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
GTest -  参数化测试 ,[object Object],[object Object],[object Object],[object Object]
GTest -  运行参数 ,[object Object],[object Object],[object Object],[object Object],[object Object]
GTest -  运行参数 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
小技巧
小技巧 ,[object Object],[object Object],[object Object],[object Object],[object Object]
GTest ,[object Object],[object Object]
经验交流 ,[object Object],最高原则
经验交流 ,[object Object],[object Object]
经验交流 ,[object Object],[object Object]
经验交流 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Google Mock ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
BDD ,[object Object],As  a [X]  I  want [Y]  so  that [Z] Given  some initial context  When  an event occurs,  then  ensure some outcomes. 故事模板 场景模板
BDD ,[object Object],Given  I am not logged in When  I log in as Morgan with a password SecretPassw0rd Then  I should see a message, "Welcome, Morgan!"
BDD ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
我的实践 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Principles ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Principles ,[object Object],[object Object],[object Object],[object Object],[object Object]
做有用的测试! 谢谢大家

Mais conteúdo relacionado

Mais procurados

Keep your code clean
Keep your code cleanKeep your code clean
Keep your code cleanmacrochen
 
PHPUnit + Xdebug 单元测试技术
PHPUnit + Xdebug 单元测试技术PHPUnit + Xdebug 单元测试技术
PHPUnit + Xdebug 单元测试技术hoopchina
 
Java script测试之js unit ut
Java script测试之js unit utJava script测试之js unit ut
Java script测试之js unit utfangdeng
 
嵌入式測試驅動開發
嵌入式測試驅動開發嵌入式測試驅動開發
嵌入式測試驅動開發hugo lu
 
Ecma script3
Ecma script3 Ecma script3
Ecma script3 gniavaj
 
Worktest测试框架原理
Worktest测试框架原理Worktest测试框架原理
Worktest测试框架原理Janeay
 
PHPUnit 入門介紹
PHPUnit 入門介紹PHPUnit 入門介紹
PHPUnit 入門介紹Jace Ju
 
重構—改善既有程式的設計(chapter 7)
重構—改善既有程式的設計(chapter 7)重構—改善既有程式的設計(chapter 7)
重構—改善既有程式的設計(chapter 7)Chris Huang
 
Inside.java.concurrency 35.thread pool.part8_future.scheduledthreadpoolexecutor
Inside.java.concurrency 35.thread pool.part8_future.scheduledthreadpoolexecutorInside.java.concurrency 35.thread pool.part8_future.scheduledthreadpoolexecutor
Inside.java.concurrency 35.thread pool.part8_future.scheduledthreadpoolexecutorAdy Liu
 
The ruby way test
The ruby way testThe ruby way test
The ruby way testDeng Peng
 
Ecma script edition5-小试
Ecma script edition5-小试Ecma script edition5-小试
Ecma script edition5-小试lydiafly
 
Arduino應用系統設計 - Arduino程式快速入門
Arduino應用系統設計 - Arduino程式快速入門Arduino應用系統設計 - Arduino程式快速入門
Arduino應用系統設計 - Arduino程式快速入門吳錫修 (ShyiShiou Wu)
 
所谓闭包
所谓闭包所谓闭包
所谓闭包youzitang
 
程式人雜誌 -- 2015 年9月號
程式人雜誌 -- 2015 年9月號程式人雜誌 -- 2015 年9月號
程式人雜誌 -- 2015 年9月號鍾誠 陳鍾誠
 
5, initialization & cleanup
5, initialization & cleanup5, initialization & cleanup
5, initialization & cleanupted-xu
 
Programming python - part 1
Programming python - part 1Programming python - part 1
Programming python - part 1Che-Cheng Hsu
 
程式人雜誌 2015年七月
程式人雜誌 2015年七月程式人雜誌 2015年七月
程式人雜誌 2015年七月鍾誠 陳鍾誠
 
Efficient JavaScript Unit Testing (Chinese Version), JavaOne China 2013
Efficient JavaScript Unit Testing (Chinese Version), JavaOne China 2013Efficient JavaScript Unit Testing (Chinese Version), JavaOne China 2013
Efficient JavaScript Unit Testing (Chinese Version), JavaOne China 2013Hazem Saleh
 
Free rtos workshop1@nuu
Free rtos workshop1@nuuFree rtos workshop1@nuu
Free rtos workshop1@nuu紀榮 陳
 

Mais procurados (20)

Keep your code clean
Keep your code cleanKeep your code clean
Keep your code clean
 
PHPUnit + Xdebug 单元测试技术
PHPUnit + Xdebug 单元测试技术PHPUnit + Xdebug 单元测试技术
PHPUnit + Xdebug 单元测试技术
 
Java script测试之js unit ut
Java script测试之js unit utJava script测试之js unit ut
Java script测试之js unit ut
 
嵌入式測試驅動開發
嵌入式測試驅動開發嵌入式測試驅動開發
嵌入式測試驅動開發
 
Ecma script3
Ecma script3 Ecma script3
Ecma script3
 
Worktest测试框架原理
Worktest测试框架原理Worktest测试框架原理
Worktest测试框架原理
 
PHPUnit 入門介紹
PHPUnit 入門介紹PHPUnit 入門介紹
PHPUnit 入門介紹
 
重構—改善既有程式的設計(chapter 7)
重構—改善既有程式的設計(chapter 7)重構—改善既有程式的設計(chapter 7)
重構—改善既有程式的設計(chapter 7)
 
Inside.java.concurrency 35.thread pool.part8_future.scheduledthreadpoolexecutor
Inside.java.concurrency 35.thread pool.part8_future.scheduledthreadpoolexecutorInside.java.concurrency 35.thread pool.part8_future.scheduledthreadpoolexecutor
Inside.java.concurrency 35.thread pool.part8_future.scheduledthreadpoolexecutor
 
The ruby way test
The ruby way testThe ruby way test
The ruby way test
 
Java annotation
Java annotationJava annotation
Java annotation
 
Ecma script edition5-小试
Ecma script edition5-小试Ecma script edition5-小试
Ecma script edition5-小试
 
Arduino應用系統設計 - Arduino程式快速入門
Arduino應用系統設計 - Arduino程式快速入門Arduino應用系統設計 - Arduino程式快速入門
Arduino應用系統設計 - Arduino程式快速入門
 
所谓闭包
所谓闭包所谓闭包
所谓闭包
 
程式人雜誌 -- 2015 年9月號
程式人雜誌 -- 2015 年9月號程式人雜誌 -- 2015 年9月號
程式人雜誌 -- 2015 年9月號
 
5, initialization & cleanup
5, initialization & cleanup5, initialization & cleanup
5, initialization & cleanup
 
Programming python - part 1
Programming python - part 1Programming python - part 1
Programming python - part 1
 
程式人雜誌 2015年七月
程式人雜誌 2015年七月程式人雜誌 2015年七月
程式人雜誌 2015年七月
 
Efficient JavaScript Unit Testing (Chinese Version), JavaOne China 2013
Efficient JavaScript Unit Testing (Chinese Version), JavaOne China 2013Efficient JavaScript Unit Testing (Chinese Version), JavaOne China 2013
Efficient JavaScript Unit Testing (Chinese Version), JavaOne China 2013
 
Free rtos workshop1@nuu
Free rtos workshop1@nuuFree rtos workshop1@nuu
Free rtos workshop1@nuu
 

Semelhante a GTest交流与经验总结

Java单元测试
Java单元测试Java单元测试
Java单元测试darlingshan
 
从问题开始,谈前端架构
从问题开始,谈前端架构从问题开始,谈前端架构
从问题开始,谈前端架构裕波 周
 
李泽帆_如何创造一门上万人使用的语言 TWEB
李泽帆_如何创造一门上万人使用的语言 TWEB李泽帆_如何创造一门上万人使用的语言 TWEB
李泽帆_如何创造一门上万人使用的语言 TWEB泽帆 李
 
Junit使用指南及作业规范
Junit使用指南及作业规范Junit使用指南及作业规范
Junit使用指南及作业规范dong jiang
 
由一个简单的程序谈起--之四
由一个简单的程序谈起--之四由一个简单的程序谈起--之四
由一个简单的程序谈起--之四yiditushe
 
單元測試:Mocha、Chai 和 Sinon
單元測試:Mocha、Chai 和 Sinon單元測試:Mocha、Chai 和 Sinon
單元測試:Mocha、Chai 和 SinonHsin-Hao Tang
 
竞赛中C++语言拾遗
竞赛中C++语言拾遗竞赛中C++语言拾遗
竞赛中C++语言拾遗乐群 陈
 
Javascript Training
Javascript TrainingJavascript Training
Javascript Trainingbeijing.josh
 
junit单元测试实例教程
junit单元测试实例教程junit单元测试实例教程
junit单元测试实例教程Giovanni Wu
 
第01章 绪论(java版)
第01章  绪论(java版)第01章  绪论(java版)
第01章 绪论(java版)Yan Li
 
張逸 - 研究所 / 轉學考計算機概論 、公職計算機概要 - 程式語言 - 試閱版
張逸 - 研究所 / 轉學考計算機概論 、公職計算機概要 - 程式語言 - 試閱版張逸 - 研究所 / 轉學考計算機概論 、公職計算機概要 - 程式語言 - 試閱版
張逸 - 研究所 / 轉學考計算機概論 、公職計算機概要 - 程式語言 - 試閱版逸 張
 
1 C入門教學
1  C入門教學1  C入門教學
1 C入門教學Sita Liu
 
JavaScript 80+ Programming and Optimization Skills
JavaScript 80+ Programming and Optimization SkillsJavaScript 80+ Programming and Optimization Skills
JavaScript 80+ Programming and Optimization SkillsHo Kim
 
由一个简单的程序谈起――之二
由一个简单的程序谈起――之二由一个简单的程序谈起――之二
由一个简单的程序谈起――之二yiditushe
 
Android 智慧型手機程式設計
Android 智慧型手機程式設計Android 智慧型手機程式設計
Android 智慧型手機程式設計Kyle Lin
 
Avm2虚拟机浅析与as3性能优化(陈士凯)
Avm2虚拟机浅析与as3性能优化(陈士凯)Avm2虚拟机浅析与as3性能优化(陈士凯)
Avm2虚拟机浅析与as3性能优化(陈士凯)FLASH开发者交流会
 
[Flash开发者交流][2010.05.30]avm2虚拟机浅析与as3性能优化(陈士凯)
[Flash开发者交流][2010.05.30]avm2虚拟机浅析与as3性能优化(陈士凯)[Flash开发者交流][2010.05.30]avm2虚拟机浅析与as3性能优化(陈士凯)
[Flash开发者交流][2010.05.30]avm2虚拟机浅析与as3性能优化(陈士凯)Shanda innovation institute
 

Semelhante a GTest交流与经验总结 (20)

Java单元测试
Java单元测试Java单元测试
Java单元测试
 
从问题开始,谈前端架构
从问题开始,谈前端架构从问题开始,谈前端架构
从问题开始,谈前端架构
 
李泽帆_如何创造一门上万人使用的语言 TWEB
李泽帆_如何创造一门上万人使用的语言 TWEB李泽帆_如何创造一门上万人使用的语言 TWEB
李泽帆_如何创造一门上万人使用的语言 TWEB
 
Junit使用指南及作业规范
Junit使用指南及作业规范Junit使用指南及作业规范
Junit使用指南及作业规范
 
由一个简单的程序谈起--之四
由一个简单的程序谈起--之四由一个简单的程序谈起--之四
由一个简单的程序谈起--之四
 
單元測試:Mocha、Chai 和 Sinon
單元測試:Mocha、Chai 和 Sinon單元測試:Mocha、Chai 和 Sinon
單元測試:Mocha、Chai 和 Sinon
 
竞赛中C++语言拾遗
竞赛中C++语言拾遗竞赛中C++语言拾遗
竞赛中C++语言拾遗
 
Javascript Training
Javascript TrainingJavascript Training
Javascript Training
 
junit单元测试实例教程
junit单元测试实例教程junit单元测试实例教程
junit单元测试实例教程
 
第01章 绪论(java版)
第01章  绪论(java版)第01章  绪论(java版)
第01章 绪论(java版)
 
張逸 - 研究所 / 轉學考計算機概論 、公職計算機概要 - 程式語言 - 試閱版
張逸 - 研究所 / 轉學考計算機概論 、公職計算機概要 - 程式語言 - 試閱版張逸 - 研究所 / 轉學考計算機概論 、公職計算機概要 - 程式語言 - 試閱版
張逸 - 研究所 / 轉學考計算機概論 、公職計算機概要 - 程式語言 - 試閱版
 
1 C入門教學
1  C入門教學1  C入門教學
1 C入門教學
 
JavaScript 80+ Programming and Optimization Skills
JavaScript 80+ Programming and Optimization SkillsJavaScript 80+ Programming and Optimization Skills
JavaScript 80+ Programming and Optimization Skills
 
Java Thread
Java ThreadJava Thread
Java Thread
 
Python story
Python storyPython story
Python story
 
jasmine入门指南
jasmine入门指南jasmine入门指南
jasmine入门指南
 
由一个简单的程序谈起――之二
由一个简单的程序谈起――之二由一个简单的程序谈起――之二
由一个简单的程序谈起――之二
 
Android 智慧型手機程式設計
Android 智慧型手機程式設計Android 智慧型手機程式設計
Android 智慧型手機程式設計
 
Avm2虚拟机浅析与as3性能优化(陈士凯)
Avm2虚拟机浅析与as3性能优化(陈士凯)Avm2虚拟机浅析与as3性能优化(陈士凯)
Avm2虚拟机浅析与as3性能优化(陈士凯)
 
[Flash开发者交流][2010.05.30]avm2虚拟机浅析与as3性能优化(陈士凯)
[Flash开发者交流][2010.05.30]avm2虚拟机浅析与as3性能优化(陈士凯)[Flash开发者交流][2010.05.30]avm2虚拟机浅析与as3性能优化(陈士凯)
[Flash开发者交流][2010.05.30]avm2虚拟机浅析与as3性能优化(陈士凯)
 

GTest交流与经验总结

  • 1. GTest 交流 与经验总结 张长荣
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10. 《玩转 GTest 》 zhanyong.wan from Google
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18. XUnit 基础 分享:测试代码尽量简洁、清晰。
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37. GTest - 参数化测试 分享: 一个测试案例,理想情况下,只需要一个断言。
  • 38.
  • 39.
  • 40.
  • 41.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.