[z]一个轻量级C++单元测试框架——ztest
时间:2010-11-09 来源:eeevictor
之前也看过别人写的一些单元测试框架,google的gtest算是比较有名的了,还有其它一些,基本实现都大同小异。总的来说,gtest显得有些重量级,另外的一些,测试用例不能分组,所有的用例只能一起运行,感觉不是很方便。周末的时候,折腾了一个相对比较轻量级的单元测试框架,命名为ZTest, 通过定义不同的测试类,可以支持对用例进行分组。下面从四个方面,对ZTest做一个介绍:
- 1. ZTest是什么?
ZTest是一个轻量级的c++程序单元测试框架
- 2. 如何获得ZTest?
可以从google code:http://xiao5geproject.googlecode.com/svn/trunk/ztest 处获得ZTest的源码。
- 3. 如何使用ZTest?
使用ZTest要遵循以下几个步骤:
(1)包含ztest.h:1
#include "ztest.h"
(2)声明测试类和测试用例
1 2 3 4
Z_BEGIN_TEST_CLASS(Test) Z_DECLARE_TEST_CASE(Global, Add) Z_DECLARE_TEST_CASE(Class, Add) Z_END_TEST_CLASS()
(3)定义测试对象
1
Z_DEFINE_TEST_OBJECT(Test, tester)
(4)定义测试用例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Z_DEFINE_TEST_CASE(Test, tester, Global, Add) { Z_EXPECT_EQ(1 - 3, 2); } class Test { public: int Add(int a, int b) { return a + b; } }; Z_DEFINE_TEST_CASE(Test, tester, Class, Add) { Test test; Z_EXPECT_TRUE(test.Add(3, -4) == -1); }
(5)运行测试用例
1 2 3 4
int main() { Z_RUN_ALL_TESTCASES(tester); }
(6)编译运行单元测试程序:
1 2 3
Running test case: Global/Add [Check failed] 1 - 3 == 2 Running test case: Class/Add [Passed] Tatal 2 cases, passed 1
- 4. 其它
(1)如果在测试某个类的私有成员,可以在#include “ztest.h”之前定义宏:Z_NEED_ACCESS_PRIVATE_MEMBER, 然后在被测试的类中用Z_DECLARE_FRIEND(name)把测试类声明为被测试类的友元类。
(2)可以通过定义多个测试类实现对测试用例的分类
(3)任何个人或者组织都可以免费使用ZTest。使用过程中如果发现什么bug, 或者有什么好的改进建议,都可以在这里给我留言,谢谢!
(4)如果不能访问google code的朋友,可以点击这里,直接进行下载:ztest.zip