谷歌的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。
本文基于署名 2.5 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名小橋流水(包含链接)。如您有任何疑问或者授权方面的协商,请给我发邮件。