玩转Google单元测试框架gtest系列之八:打造自己的单元测试框架

发表于:2010-4-13 15:48

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:CoderZh    来源:www.cnblogs.com/coderzh

  一、前言

  上一篇我们分析了gtest的一些内部实现,总的来说整体的流程并不复杂。本篇我们就尝试编写一个精简版本的C++单元测试框架:nancytest ,通过编写这个简单的测试框架,将有助于我们理解gtest。

  二、整体设计

  使用最精简的设计,我们就用两个类,够简单吧:

  1. TestCase类

  包含单个测试案例的信息。

  2. UnitTest类

  负责所有测试案例的执行,管理。

  三、TestCase类

  TestCase类包含一个测试案例的基本信息,包括:测试案例名称,测试案例执行结果,同时还提供了测试案例执行的方法。我们编写的测试案例都继承自TestCase类。

class TestCase
{
public:
    TestCase(
const char* case_name) : testcase_name(case_name){}

    
// 执行测试案例的方法
    virtual void Run() = 0;

    
int nTestResult; // 测试案例的执行结果 
    const char* testcase_name; // 测试案例名称
};

  四、UnitTest类

  我们的UnitTest类和gtest的一样,是一个单件。我们的UnitTest类的逻辑非常简单:

  1. 整个进程空间保存一个UnitTest 的单例。

  2. 通过RegisterTestCase()将测试案例添加到测试案例集合testcases_中。

  3. 执行测试案例时,调用UnitTest::Run(),遍历测试案例集合testcases_,调用案例的Run()方法。

class UnitTest
{
public:
    
// 获取单例
    static UnitTest* GetInstance(); 

    
// 注册测试案例
    TestCase* RegisterTestCase(TestCase* testcase);
    
    
// 执行单元测试
    int Run();

    TestCase
* CurrentTestCase; // 记录当前执行的测试案例
    int nTestResult; // 总的执行结果
    int nPassed; // 通过案例数
    int nFailed; // 失败案例数
protected:
    std::vector
<TestCase*> testcases_; // 案例集合
};

31/3123>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号