Wince和Windows Mobile下native C++的单元测试
来源:互联网 发布:影视后期剪辑软件界面 编辑:程序博客网 时间:2024/05/22 06:31
单元测试(Unit Test)已经成为开发过程中不可分割的一部分,也是refactoring的基础,在Wince和Windows Mobile开发native C++时可以使用CppUnitLite进行单元测试。
在其他平台开发C++的时候,我一直使用CppUnit进行单元测试,可是CppUnit不支持Wince平台,因此在Wince下选择CppUnitLite进行单元测试。CppUnitLite是CppUnit的作者MichaelFeathers重新开发的针对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 <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
- Wince和Windows Mobile下native C++的单元测试
- Windows Mobile和Wince下使用TinyXML进行Native C++的开发
- Wince和Windows Mobile下的内存监控
- Wince和Windows Mobile的关系
- Wince和Windows Mobile的关系
- Wince和Windows Mobile的关系
- Windows Mobile和WinCE的区别
- WinCE和Windows Mobile的比较
- Windows Mobile 和 Wince(Windows Embedded CE) 下的 WTL(Windows Template Library) 界面(UI)开发
- mobile和wince下的gprs拨号
- WinCE和Windows Mobile下使用TinyXML进行C++的开发
- Windows Mobile和Wince(Windows Embedded CE)的字符集问题
- Windows Mobile和Wince(Windows Embedded CE)的字符集问题
- Windows Mobile下访问Sqlite的Native C++封装
- Windows Mobile下访问Sqlite的Native C++封装
- Windows Mobile下访问Sqlite的Native C++封装
- wince 和windows mobile有什么区别?
- Wince和Windows Mobile 区别与联系
- 明晰C++内存分配的五种方法的区别
- 创建chroot环境
- ora-01033和ora-01219
- 开机后桌面非常模糊?
- 忠告
- Wince和Windows Mobile下native C++的单元测试
- ADempiere服务器的启动
- Php中判断一个字符串为空
- ejb本地调用总结(websphere)
- 数字音频技术与杜比AC-3数字音频编码
- 解析#pragma指令
- weblogic10+ejb3
- Linux启动级别
- PKU 1887 Testing the CATCHER