Wince和Windows Mobile下native C++的单元测试

简介:

单元测试(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下环境的搭建。

先从http://www.objectmentor.com/resources/bin/CppUnitLite.zip下载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来比较。

 

参考文献 

Cpp Unit Lite

Windows Mobile Native Unit Testing


    本文转自Jake Lin博客园博客,原文链接:http://www.cnblogs.com/procoder/archive/2009/04/03/Windows-Mobile-UnitTest-CppUnitLite.html ,如需转载请自行联系原作者


相关文章
|
7月前
|
SQL 安全 Linux
Metasploit Pro 4.22.8-20251014 (Linux, Windows) - 专业渗透测试框架
Metasploit Pro 4.22.8-20251014 (Linux, Windows) - 专业渗透测试框架
401 1
Metasploit Pro 4.22.8-20251014 (Linux, Windows) - 专业渗透测试框架
|
7月前
|
Linux 网络安全 iOS开发
Metasploit Framework 6.4.95 (macOS, Linux, Windows) - 开源渗透测试框架
Metasploit Framework 6.4.95 (macOS, Linux, Windows) - 开源渗透测试框架
827 1
Metasploit Framework 6.4.95 (macOS, Linux, Windows) - 开源渗透测试框架
|
8月前
|
安全 Linux 网络安全
Metasploit Pro 4.22.8-2025091701 (Linux, Windows) - 专业渗透测试框架
Metasploit Pro 4.22.8-2025091701 (Linux, Windows) - 专业渗透测试框架
485 2
Metasploit Pro 4.22.8-2025091701 (Linux, Windows) - 专业渗透测试框架
|
7月前
|
Ubuntu API C++
C++标准库、Windows API及Ubuntu API的综合应用
总之,C++标准库、Windows API和Ubuntu API的综合应用是一项挑战性较大的任务,需要开发者具备跨平台编程的深入知识和丰富经验。通过合理的架构设计和有效的工具选择,可以在不同的操作系统平台上高效地开发和部署应用程序。
297 11
|
8月前
|
Linux 网络安全 iOS开发
Metasploit Framework 6.4.90 (macOS, Linux, Windows) - 开源渗透测试框架
Metasploit Framework 6.4.90 (macOS, Linux, Windows) - 开源渗透测试框架
548 1
Metasploit Framework 6.4.90 (macOS, Linux, Windows) - 开源渗透测试框架
|
7月前
|
Java 测试技术 网络安全
Burp Suite Professional 2025.10 for Windows x64 - 领先的 Web 渗透测试软件
Burp Suite Professional 2025.10 for Windows x64 - 领先的 Web 渗透测试软件
344 0
Burp Suite Professional 2025.10 for Windows x64 - 领先的 Web 渗透测试软件
|
8月前
|
安全 Linux 网络安全
Metasploit Framework 6.4.88 (macOS, Linux, Windows) - 开源渗透测试框架
Metasploit Framework 6.4.88 (macOS, Linux, Windows) - 开源渗透测试框架
667 0
|
安全 Linux 测试技术
OpenText Static Application Security Testing (Fortify) 25.3 (macOS, Linux, Windows) - 静态应用安全测试
OpenText Static Application Security Testing (Fortify) 25.3 (macOS, Linux, Windows) - 静态应用安全测试
755 0
|
8月前
|
缓存 安全 Linux
Metasploit Pro 4.22.8-2025082101 (Linux, Windows) - 专业渗透测试框架
Metasploit Pro 4.22.8-2025082101 (Linux, Windows) - 专业渗透测试框架
306 0
|
11月前
|
安全 Linux 网络安全
Metasploit Pro 4.22.7-2025061201 (Linux, Windows) - 专业渗透测试框架
Metasploit Pro 4.22.7-2025061201 (Linux, Windows) - 专业渗透测试框架
377 3
Metasploit Pro 4.22.7-2025061201 (Linux, Windows) - 专业渗透测试框架