首页 > 程序人生 > 一个轻量级C++单元测试框架——ztest

一个轻量级C++单元测试框架——ztest

之前也看过别人写的一些单元测试框架,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

    1. 2010年9月9日14:29 | #1

      学习了。

    2. 2010年9月10日13:38 | #2

      我不懂。来顶一下~

    3. 2010年9月12日17:49 | #3

      今早新年第一天上班,老板发红包。。。爽。。。。

    4. 2010年9月13日16:04 | #4

      路过。。

    5. 2010年9月16日06:40 | #5

      这篇文章太好了,我先收藏了。

    6. 2010年9月16日11:11 | #6

      不错,学习了

    7. 2010年9月19日07:02 | #7

      悄悄告诉lz,这篇文章我转走了

    8. 2010年9月19日22:28 | #8

      中秋竟然不放假,无聊了,只能网上四处转转~\(≧▽≦)/~啦啦啦

    9. 2010年9月20日19:15 | #9

      写的真好,收藏了,感谢分享

    10. 2010年9月21日14:06 | #10

      这世界太疯狂了,博主也疯狂下

    11. 2010年9月25日09:47 | #11

      呵呵,有点难了!

    12. 小凳子
      2010年9月30日17:46 | #12

      你的粉丝好多啊 我也算一个

    1. 本文目前尚无任何 trackbacks 和 pingbacks.
    您必须在 登录 后才能发布评论.