博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Wince和Windows Mobile下native C++的单元测试
阅读量:6223 次
发布时间:2019-06-21

本文共 1789 字,大约阅读时间需要 5 分钟。

单元测试(Unit Test)已经成为开发过程中不可分割的一部分,也是refactoring的基础,在Wince和Windows Mobile开发native  C++时可以使用CppUnitLite进行单元测试。

在其他平台开发C++的时候,我一直使用CppUnit进行单元测试,可是CppUnit不支持Wince平台,因此在Wince下选择CppUnitLite进行单元测试。CppUnitLite是CppUnit的作者Michael Feathers重新开发的针对C++的单元测试框架。其开发目的是更加简便的开发单独的测试用例(只是需要一个TEST的宏就自动注册测试,而不需要同时并且分别使用函数,头文件和注册三个不同的文件。)同时CppUnitLite去掉C++的一些新特性,例如RTTI, exceptions, and templates,所以CppUnitLite更容易移植,CppUnitLite完全支持Wince和Windows Mobile。

 
环境搭建

下面讲述CppUnitLite在Wince和Windows Mobile下环境的搭建。

先从下载CppUnitLite。

新建一个Smart Device的项目

 

 选择相应的平台,由于这是native的库,所以编译的Output与平台相关,使用时需要选择相应的平台。

 

 选择Static Library并取消Precompiled header的选项。

 

把下载的文件中/om/CppUnitLite/下的所有文件拷贝到项目目录CppUnitLite下,把CppUnitLite下的所有.h和.cpp加入项目中

 

编译后生成静态库CppUnitLite.lib。

 

使用CppUnitLite

在需要进行单元测试的项目下建立一个文件夹叫做CppUnitLite,把需要的头文件拷贝到这个文件夹下。

在Linker里面增加依赖库 CppUnitLite.lib

 

#include 
"
CppUnitLite\TestHarness.h
"
#include 
<
string
>
int
 _tmain(
int
 argc, _TCHAR
*
 argv[])
{
    TestResult tr;
    TestRegistry::runAllTests(tr);
    
return
 
0
;
}
SimpleString StringFrom(
const
 std::
string
&
 value)
{
    
return
 SimpleString(value.c_str());
}
class
 ClassA
{
public
:
  
int
 Method1() 
  {
    
return
 
5
;
  }
  
double
 Method2() 
  {
    
return
 
1.88587
;
  }
  std::
string
 Method3() 
  {
    
return
 
"
string1
"
;
  }
  
bool
 Method4() 
  {
    
return
 
true
;
  }
};
TEST( Stack, test_simple )
{
  ClassA a;
  
  LONGS_EQUAL(
5
, a.Method1());
  DOUBLES_EQUAL(
1.9
, a.Method2(), 
0.1
);
  CHECK_EQUAL(
"
string
"
, a.Method3());
  CHECK(
!
a.Method4());
}

 

TEST用于定义测试类,第一个参数为测试名,一般使用类名字,第二个为测试分组名字。 LONGS_EQUAL用于整型比较,DOUBLES_EQUAL用于浮点数的比较,第三个参数为精度。CHECK_EQUAL用于字符串的比较,由于CppUnitLite不依赖于STL,所以需要StringFrom函数来转换std::string到CppUnitLite的string类。CHECK是逻辑比较,这个宏可以用于任何的比较,例如有一个类重载了==(等号操作符),那么可以使用CHECK来比较。

 

参考文献 

    本文转自Jake Lin博客园博客,原文链接:http://www.cnblogs.com/procoder/archive/2009/04/03/Windows-Mobile-UnitTest-CppUnitLite.html
,如需转载请自行联系原作者
你可能感兴趣的文章
[1]朝花夕拾-JAVA类的执行顺序
查看>>
常用shell命令
查看>>
[js高手之路] vue系列教程 - vue的基本用法与常见指令(1)
查看>>
glGetString(GL_VERSION) returns “OpenGL ES-CM 1.1” but my phone supports OpenGL 2
查看>>
RDA PQ工具使用 (屏参调整)
查看>>
Servlet学习笔记(三):HTTP请求与响应
查看>>
HttpClient request payload post请求
查看>>
MySQL慢查询
查看>>
Bootstrap树控件(Tree控件组件)使用经验分享
查看>>
Linux搭建JavaEE开发环境与Tomcat——(十)
查看>>
JFinal 学习笔记之Handler包分析
查看>>
Redis总结(六)Redis配置文件全解
查看>>
“四核”驱动的“三维”导航 -- 淘宝新UI(需求分析篇)
查看>>
iOS开发如何在一个透明视图上添加不透明的子控件
查看>>
加解密
查看>>
Cortex-A9 UART
查看>>
envoy 功能介绍
查看>>
百度地图api ak值
查看>>
macOS High Sierra Terminal巨卡问题的解决
查看>>
【SSH项目实战】脚本密钥的批量分发与执行【转】
查看>>