谷歌的gtest

gtest是谷歌推出的一个开源的c/c++程序单元测试框架,为中国很多公司采用,据我所知百度和腾讯都在是gtest进行但测。

gtest的官方网站请访问http://code.google.com/p/googletest/。在我未工作之前,在学校的时候,写程序的时候从来不写单测,也不知道如何去写单测。我通常是通过一个小例子来验证一段程序的正确性。这种做法是显而易见的。

在用了gtest后会很方便得发现和解决问题,有效控制代码中bug的数量。

gtest的一般结构如下所示:

class FooCalcTest:public testing::Test
{
protected:
virtual void SetUp()
    {
        m_foo.Init();
    }
virtual void TearDown()
    {
        m_foo.Finalize();
    }
    FooCalc m_foo;
};
TEST_F(FooCalcTest, HandleNoneZeroInput)
{
    EXPECT_EQ(4, m_foo.Calc(12, 16));
}
TEST_F(FooCalcTest, HandleNoneZeroInput_Error)
{
    EXPECT_EQ(5, m_foo.Calc(12, 16));
}

在Setup中进行全局的初始化,注意对于每个case都会执行一遍Setup函数。TearDown是进行全局的释放,是Setup的逆过程。TEST_F是定义case的宏。

如果你要详细了解gtest,可以博客园上的参考文章专题:http://www.cnblogs.com/coderzh/archive/2009/04/06/1426755.html。

posted on 2011-11-19 14:07  小橋流水  阅读(345)  评论(0编辑  收藏  举报

导航