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

成都創(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)站價(jià)格咨詢:18982081108
假設(shè)我們要使用Stl完成一項(xiàng)相對(duì)較通用的工作:為某個(gè)struct的vector,創(chuàng)建一個(gè)迭代器,用來(lái)返回struct的某個(gè)成員。這樣做的意義是什么呢?假設(shè)我們要對(duì)該結(jié)構(gòu)的vector,基于其某個(gè)字段排序,只需要為sort算法提供這種類型的迭代器就行了。這樣算法就真正無(wú)需考慮容器“是什么”的問(wèn)題。
當(dāng)然,可以寫一個(gè)比較函數(shù)來(lái)使用sort,但若是自己寫的更復(fù)雜的算法呢?我們直接將struct數(shù)組,偽造成某個(gè)字段的數(shù)組,這樣豈非是最省事的方法?
那么我們先創(chuàng)建一個(gè)本機(jī)單元測(cè)試項(xiàng)目。
先寫測(cè)試代碼,意思很簡(jiǎn)單,需要為某個(gè)vector創(chuàng)建迭代器器,檢查其返回值是否正確,檢查是否到了vector的最后位置:
- TEST_METHOD(Iterator_Test)
- {
- vector
q;- Quote quote={1.00,2.00};
- q.push_back(quote);
- quote.open=2.00;
- q.push_back(quote);
- myit i(q.begin());
- Assert::AreEqual((double)1.00, (double)(*i),0.0001, L"message", LINE_INFO());
- ++i;
- Assert::AreEqual((double) 2.00, (double)(*i),0.0001, L"message", LINE_INFO());
- ++i;
- Assert::AreEqual
::iterator>(q.end(),i,L"message", LINE_INFO());
那么實(shí)現(xiàn)這項(xiàng)功能的方法也容易,代碼如下:
- struct Quote
- {
- float open,close;
- };
- class myit : public std::vector
::iterator {- public:
- inline myit(std::vector
::iterator const &c):std::vector::iterator(c) {}- float operator*() {
- const Quote &p = std::vector
::iterator::operator*();- return p.open;
- }
- typedef float value_type;
- typedef float *pointer;
- typedef float &reference;
- };
注意,這里沒有做任何抽象,僅僅是簡(jiǎn)單的實(shí)現(xiàn)一個(gè)針對(duì)vector的迭代器,希望提供其作為算法的參數(shù)。若我們有興趣的話,可以簡(jiǎn)單的抽象一下,針對(duì)任何容器,快速提供一個(gè)迭代器,返回其某個(gè)成員。類似Iterator
我們打開測(cè)試試圖:列出已有的測(cè)試,選擇希望運(yùn)行的,執(zhí)行。單元測(cè)試在Ide內(nèi)很好的集成工作,同時(shí)與Tfs德生成服務(wù)也能正常協(xié)同,類似Google Test之類的,從此可以好生休息了。
當(dāng)前題目:VisualStudio2012的C++原生單元測(cè)試
本文網(wǎng)址:http://m.fisionsoft.com.cn/article/dpcjdgg.html


咨詢
建站咨詢
