百度首页 | 百度空间
 
查看文章
 
google开源测试框架的使用(二)
2008-07-12 15:40
上一篇简要介绍了测试框架的安装以及测试函数TEST的使用,这里介绍一下TEST_F的使用。TEST_F与TEST的区别是TEST_F提供了一个初始化函数(SetUp)和一个清理函数(TearDown),在TEST_F中使用的变量可以在初始化函数SetUp中初始化,在TearDown中销毁,并且所有的TEST_F是互相独立的,都是在初始化以后的状态开始运行,一个TEST_F不会影响另一个TEST_F所使用的数据,下面是一个例子。

需要测试的代码:
A.h
#ifndef A_H
#define A_H

class A
{
private:
    int _a;
public:
    A( int a );
    ~A( );
    void add( int a );
    int getA( );
};
#endif

A.cpp
#include "A.h"

A::A( int a ){
    this->_a = a;
}
A::~A( ){
}

void A::add( int a ){
    this->_a += a;
}

int A::getA( ){
    return this->_a;
}

测试代码:
A_test.cpp

#include "A.h"
#include <gtest/gtest.h>

class A_test : public testing::Test {
protected:
    A* _p_a;

    virtual void SetUp( ){      //初始化函数
        this->_p_a = new A( 1 );
    }
    virtual void TearDown( ){   //清理函数
        delete this->_p_a;
    }
};

//第一个测试,参数A_test是上面的那个类,第二个参数FirstAdd是测试名称
TEST_F( A_test,FirstAdd ){        
    EXPECT_EQ( 1,_p_a->getA( ) );
    _p_a->add( 3 );
    EXPECT_EQ( 4,_p_a->getA( ) );
}

//第二个测试
TEST_F( A_test,SecondAdd ){
    EXPECT_EQ( 1,_p_a->getA( ) );
    _p_a->add( 5 );
    EXPECT_EQ( 6,_p_a->getA( ) );
}
/*
上面的两个测试都是在SetUp函数执行后的状态下执行,也就是说在执行任意一个TEST_F时 _p_a->_a 的值都是初始值1
*/

主函数(同上一个例子相同)
main.cpp
#include <gtest/gtest.h>

int main(int argc, char * argv[])
{
    testing::InitGoogleTest(&argc, argv);
    return RUN_ALL_TESTS();

    return 0;
}

编译后执行的结果如下:
$ gtester main
TEST: main... (pid=13965)
[==========] Running 2 tests from 1 test case.
[----------] Global test environment set-up.
[----------] 2 tests from A_test
[ RUN      ] A_test.FirstAdd
[       OK ] A_test.FirstAdd
[ RUN      ] A_test.SecondAdd
[       OK ] A_test.SecondAdd
[----------] Global test environment tear-down
[==========] 2 tests from 1 test case ran.
[ PASSED ] 2 tests.
PASS: main

类别:c/c++ | 添加到搜藏 | 浏览() | 评论 (3)
 
最近读者:
 
网友评论:
1
2008-07-15 13:50
这就是传说中的牛B布朗?
 
2
2008-07-16 16:10
看作者的名字是个华人
 
3
2008-07-16 19:32
禁止在百度博客谈论Google 娃哈哈^_^
 
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码:
 

     

©2008 Baidu