关闭

Google Test 测试架构探究

发表于:2012-8-08 10:28

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

 作者:salomon    来源:51Testing软件测试网采编

  例如以下测试Foo方法,NTEST(FooTest_PassDemo)就是创建一个名为FooTest_PassDemo_Test的子类,将宏定义的断言EXPECT_EQ()等放入Run()方法主题中。展开代码如下。

int Foo(int a, int b)
{
    return a + b;
}

NTEST(FooTest_PassDemo)
{
    EXPECT_EQ(3, Foo(1, 2));
    EXPECT_EQ(2, Foo(1, 1));
}

// 将以上宏定义展开等价于以下代码。

class FooTest_PassDemo_TEST : public TestCase
{
public:
    FooTest_PassDemo_TEST(const char* case_name) : TestCase(case_name){};
    virtual void Run();
private:
    static TestCase* const testcase_;
};

TestCase* const FooTest_PassDemo_TEST::testcase_ = UnitTest::GetInstance()->RegisterTestCase(new FooTest_PassDemo_TEST("FooTest_PassDemo"));
void FooTest_PassDemo_TEST::Run()
{
    if (3 != Foo(1, 2))
    {
    UnitTest::GetInstance()->CurrentTestCase->nTestResult = 0;
    std::cout << red << "Failed" << std::endl;
    std::cout << red << "Expect:" << Foo(1, 2) << std::endl;
    std::cout << red << "Actual:" << 3 << std::endl;
    }
    if (2 != Foo(1, 1))
    {
    UnitTest::GetInstance()->CurrentTestCase->nTestResult = 0;
    std::cout << red << "Failed" << std::endl;
    std::cout << red << "Expect:" << Foo(1, 1) << std::endl;
    std::cout << red << "Actual:" << 2 << std::endl;
    }
}

int _tmain(int argc, _TCHAR* argv[])
{
 
 //return UnitTest::GetInstance()->Run();
 return RUN_ALL_TESTS();
}

  坐在班车上,脑子里回想着这篇博客,突然间有种模糊的意识,COM的设计思想貌似也可以用来设计单元测试框架,没有成熟的思路,只是个想法,写下以备忘。

33/3<123
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号