装上Visual Studio 2012 RC,其中一个原因,是C++的原生单元测试,与以前.net下完全一致。这是很开心的事情,下面简单的测试一下。
成都创新互联公司是一家专注于成都网站建设、做网站与策划设计,开鲁网站建设哪家好?成都创新互联公司做网站,专注于网站建设十载,网设计领域的专业建站公司;建站业务涵盖:开鲁等地区。开鲁做网站价格咨询:18982081108
假设我们要使用Stl完成一项相对较通用的工作:为某个struct的vector,创建一个迭代器,用来返回struct的某个成员。这样做的意义是什么呢?假设我们要对该结构的vector,基于其某个字段排序,只需要为sort算法提供这种类型的迭代器就行了。这样算法就真正无需考虑容器“是什么”的问题。
当然,可以写一个比较函数来使用sort,但若是自己写的更复杂的算法呢?我们直接将struct数组,伪造成某个字段的数组,这样岂非是最省事的方法?
那么我们先创建一个本机单元测试项目。
先写测试代码,意思很简单,需要为某个vector创建迭代器器,检查其返回值是否正确,检查是否到了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());
那么实现这项功能的方法也容易,代码如下:
- 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;
- };
注意,这里没有做任何抽象,仅仅是简单的实现一个针对vector的迭代器,希望提供其作为算法的参数。若我们有兴趣的话,可以简单的抽象一下,针对任何容器,快速提供一个迭代器,返回其某个成员。类似Iterator
我们打开测试试图:列出已有的测试,选择希望运行的,执行。单元测试在Ide内很好的集成工作,同时与Tfs德生成服务也能正常协同,类似Google Test之类的,从此可以好生休息了。
分享标题:VisualStudio2012的C++原生单元测试
链接分享:http://www.mswzjz.cn/qtweb/news1/529201.html
攀枝花网站建设、攀枝花网站运维推广公司-贝锐智能,是专注品牌与效果的网络营销公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 贝锐智能