Chinaunix首页 | 论坛 | 博客
  • 博客访问: 437603
  • 博文数量: 96
  • 博客积分: 4130
  • 博客等级: 上校
  • 技术积分: 1149
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-11 12:32
文章分类

全部博文(96)

文章存档

2011年(19)

2010年(75)

2009年(1)

2008年(1)

我的朋友

分类: C/C++

2010-11-09 16:56:29

之前也看过别人写的一些单元测试框架,google的gtest算是比较有名的了,还有其它一些,基本实现都大同小异。总的来说,gtest显得有些重量级,另外的一些,测试用例不能分组,所有的用例只能一起运行,感觉不是很方便。周末的时候,折腾了一个相对比较轻量级的单元测试框架,命名为ZTest, 通过定义不同的测试类,可以支持对用例进行分组。下面从四个方面,对ZTest做一个介绍:

  • 1. ZTest是什么?

    ZTest是一个轻量级的c++程序单元测试框架

  • 2. 如何获得ZTest?

    可以从google code: 处获得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的朋友,可以点击这里,直接进行下载:

  • from:
     

     

    阅读(1146) | 评论(0) | 转发(0) |
    0

    上一篇:[z]细说C++中的new与delete

    下一篇:ascii码(1)

    给主人留下些什么吧!~~