成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Visual Studio 2012的C++原生單元測試

開發 后端
我們今天將要談到的Visual Studio 2012的C++原生單元測試,將假設我們要使用Stl完成一項相對較通用的工作:為某個struct的vector,創建一個迭代器,用來返回struct的某個成員。

裝上Visual Studio 2012 RC,其中一個原因,是C++的原生單元測試,與以前.net下完全一致。這是很開心的事情,下面簡單的測試一下。

假設我們要使用Stl完成一項相對較通用的工作:為某個struct的vector,創建一個迭代器,用來返回struct的某個成員。這樣做的意義是什么呢?假設我們要對該結構的vector,基于其某個字段排序,只需要為sort算法提供這種類型的迭代器就行了。這樣算法就真正無需考慮容器“是什么”的問題。

當然,可以寫一個比較函數來使用sort,但若是自己寫的更復雜的算法呢?我們直接將struct數組,偽造成某個字段的數組,這樣豈非是最省事的方法?

那么我們先創建一個本機單元測試項目。

先寫測試代碼,意思很簡單,需要為某個vector創建迭代器器,檢查其返回值是否正確,檢查是否到了vector的最后位置: 

  1. TEST_METHOD(Iterator_Test)   
  2. {   
  3.     vector<Quote> q;   
  4.     Quote quote={1.00,2.00};   
  5.     q.push_back(quote);   
  6.     quote.open=2.00;   
  7.     q.push_back(quote);   
  8.     myit i(q.begin());   
  9.     Assert::AreEqual((double)1.00, (double)(*i),0.0001, L"message", LINE_INFO());   
  10.     ++i;   
  11.    Assert::AreEqual((double) 2.00, (double)(*i),0.0001, L"message", LINE_INFO());   
  12.    ++i;   
  13.   Assert::AreEqual<vector<Quote>::iterator>(q.end(),i,L"message", LINE_INFO());  

那么實現這項功能的方法也容易,代碼如下:

  1. struct Quote  
  2. {  
  3.         float open,close;  
  4. };  
  5.  
  6. class myit : public std::vector<Quote>::iterator {  
  7. public:  
  8.     inline myit(std::vector<Quote>::iterator const &c):std::vector<Quote>::iterator(c) {}  
  9.     float operator*() {  
  10.         const Quote &p = std::vector<Quote>::iterator::operator*();  
  11.         return p.open;  
  12.     }  
  13.     typedef float value_type;  
  14.     typedef float *pointer;  
  15.     typedef float &reference;  
  16. }; 

注意,這里沒有做任何抽象,僅僅是簡單的實現一個針對vector<Quote>的迭代器,希望提供其作為算法的參數。若我們有興趣的話,可以簡單的抽象一下,針對任何容器,快速提供一個迭代器,返回其某個成員。類似Iterator<vector<Quote>,float,匿名函數返回某個成員> iter;當然,在抽象的過程中,現有的單元測試仍是有效的。這也是敏捷開發中很常見的次序:先寫測試表達意圖,再以最簡易的方法通過測試,必要的時候才考慮抽象。

我們打開測試試圖:列出已有的測試,選擇希望運行的,執行。單元測試在Ide內很好的集成工作,同時與Tfs德生成服務也能正常協同,類似Google Test之類的,從此可以好生休息了。

責任編輯:彭凡 來源: 博客園
相關推薦

2010-01-15 14:10:42

C++單元測試

2011-01-25 10:42:29

Visual Stud

2010-03-02 09:10:41

Visual Stud

2022-08-05 09:30:57

單元測試C++

2010-01-13 09:38:17

C++單元測試

2017-01-14 23:42:49

單元測試框架軟件測試

2014-04-24 13:43:37

CC++單元測試框架

2009-09-01 16:35:16

C#單元測試

2011-08-22 13:57:55

gtest

2010-01-12 16:12:47

C++單元測試

2023-07-26 08:58:45

Golang單元測試

2011-05-16 16:52:09

單元測試徹底測試

2017-01-14 23:26:17

單元測試JUnit測試

2017-01-16 12:12:29

單元測試JUnit

2011-06-14 15:56:42

單元測試

2022-05-12 09:37:03

測試JUnit開發

2020-08-18 08:10:02

單元測試Java

2009-09-01 16:10:28

C#單元測試

2009-09-01 16:45:00

C#單元測試工具

2009-03-17 08:56:57

Visual StudVS2010C++
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美日韩一 | 中文字幕国产一区 | 青青草中文字幕 | 精品一区二区三区在线观看 | 国产偷录视频叫床高潮对白 | 免费观看av网站 | 精品久| 免费一级黄色电影 | 国产精品久久久久久模特 | 成人午夜网站 | 欧美无乱码久久久免费午夜一区 | 国产一区二区a | 中文字幕亚洲区一区二 | 午夜av影院 | 91一区二区三区在线观看 | 免费看片在线播放 | 国产精品久久久久久久久污网站 | 91精品久久久久久久久久入口 | 国产福利在线播放 | 极品久久 | 国产综合精品一区二区三区 | 欧美福利| 国产精品久久久久久一区二区三区 | 99国产精品久久久久 | 久久精品国产99国产精品 | 亚洲一区二区三区四区五区中文 | 亚洲精品久久久久久久久久久久久 | 日韩一区二区不卡 | 四虎永久免费黄色影片 | 一区二区av| 九九精品网| 精品不卡 | 精品欧美一区二区精品久久 | 国产成在线观看免费视频 | 国产精品观看 | 精品亚洲一区二区三区四区五区高 | 成人欧美一区二区三区在线播放 | 久久久91精品国产一区二区三区 | 97国产爽爽爽久久久 | 国产欧美一区二区三区在线看蜜臀 | 久久久精品一区二区三区 |