日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
VisualStudio2012的C++原生單元測試

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

成都創(chuàng)新互聯(lián)公司是一家專注于成都網(wǎng)站建設(shè)、做網(wǎng)站與策劃設(shè)計(jì),開魯網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)十載,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:開魯?shù)鹊貐^(qū)。開魯做網(wǎng)站價格咨詢:18982081108

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

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

那么我們先創(chuàng)建一個本機(jī)單元測試項(xiàng)目。

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

 
 
  1. TEST_METHOD(Iterator_Test)   
  2. {   
  3.     vector 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::iterator>(q.end(),i,L"message", LINE_INFO());  

那么實(shí)現(xiàn)這項(xiàng)功能的方法也容易,代碼如下:

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

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

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


網(wǎng)站標(biāo)題:VisualStudio2012的C++原生單元測試
文章出自:http://www.dlmjj.cn/article/dpcjdgg.html