• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

ShortCUT - 一个简短的c++单元测试框架

发布: 2009-4-03 09:05 | 作者: 不详 | 来源: 测试时代采编 | 查看: 30次 | 进入软件测试论坛讨论

领测软件测试网

介绍
 
        这个测试框架只有125行的单个头文件。它的目的是提供一种简单的方式来对c++进行单元测试。因为简单,它还能狗容易定制。一些测试框架都需要链接分离的库文件或者经过多次跳转才能工作,这就使得写case是一件非常难得事情了。
        其中一种情况是开发人员经常碰到当他们需要写单元测试用例的时候他们已经工作于项目上了。如果这个项目不应独立的库而坏掉,这就很难写出独立的单元测试用例。另外,一些程序的一些核心function不能简单的被破坏成一个单独可执行的用例。实际上,一个开发人员应该写一些单元测试用例,在一个程序内部调用自己的function,可以简单的使用#define。
        这看起来不像一种很好的软件工程方法,但是,这些都是尽早测试,通常比其它方法更好,用最小的努力来写测试,最早的完成。测试集合随着项目前进而增长,由于时间限制测试就能集合到一个单独的库和可执行的东东。
 
        我开始寻找一个现成的解决方案。在互联网上有很多xUnit的测试框架,比如Smalltalk SUnit,JUnit,NUnit,CppUnit等等

        但是很多框架都有一个共同的就是能够让它的属性在一个function中run起来,或者让其自动的跑起来。C++程序员没有那么幸运,因为需要做很多手工的工作比如宏,模板之类的,尽管不是大的工作。
设计
 
        在评估一些测试框架后,我决定它们都不是能够满足我的简单的而且能够使用修改的要求。我决定写一个测试框架,写到一个头文件中,尽量只包含尽量少的代码。这里列出设计原则:

 能够在一个单独的头文件中(没有模块或库)
 几百行代码
 易于修改扩展
 信息输出
 可选宏
 不要模板
 不要动态内存分配
 用于嵌入式系统中
 用兼容与低级别的C++ compilers (没有超炫的功能)

使用Code
 
        建立case有三件事需要做
         一个测试用例test case 
         一个测试集合test suite 
         测试集合需要添加到runner然后被调用
写一个case
 
        这个例子中,我们从TestCase基类派生出我们的测试用例
        TestCase,像其他的框架的一样,是一个结构体,能够帮助我们避免一些公共访问。

        测试code被加到一个测试方法中,TestSuite类含有一切能够让所有测试用例能够访问的任何数据,能够传递到每个测试用例的函数。当测试失败事件是能够输出有意义的输出。

struct TestAccountWithdrawal : TestCase
{
    const char* name() { return "Account withdrawal test"; }
 
    void test(TestSuite* suite) 
    {
        TestAccountSuite* data = (TestAccountSuite*)suite;
 
        data->account->Deposit(10);
 
        bool succeeded = data->account->Withdraw(11);
 
        T_ASSERT(succeeded == false);
        T_ASSERT(data->account->Balance() == 10);
    }
};


延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/

TAG: 单元 框架 ShortCUT


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网