TEST_F与TEST

TEST_F与TEST的区别是,TEST_F提供了一个初始化函数(SetUp)和一个清理函数(TearDown),在TEST_F中使用的变量可以在初始化函数SetUp中初始化,在TearDown中销毁,并且所有的TEST_F是互相独立的,都是在初始化以后的状态开始运行,一个TEST_F不会影响另一个TEST_F所使用的数据,下面是一个例子。

  需要测试的代码:

  1. //A.h  
  2. #ifndef A_H  
  3. #define A_H  
  4. class A  
  5. {  
  6. private:  
  7.   int _a;  
  8. public:  
  9.   A( int a );  
  10.   ~A( );  
  11.   void add( int a );  
  12.   int getA( );  
  13. };  
  14. #endif  
  15. A.cpp  
  16. #include "A.h"  
  17. A::A( int a ){  
  18.   this->_a = a;  
  19. }  
  20. A::~A( ){  
  21. }  
  22. void A::add( int a ){  
  23.   this->_a += a;  
  24. }  
  25. int A::getA( ){  
  26.   return this->_a;  
  27. }  

  测试代码:

  A_test.cpp

双击代码全选
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#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
*/

  主函数(同上一个例子相同)

双击代码全选
1
2
3
4
5
6
7
8
main.cpp
#include < gtest /gtest.h>
int main(int argc, char * argv[])
{
  testing::InitGoogleTest(&argc, argv);
  return RUN_ALL_TESTS();
  return 0;
}

  编译后执行的结果如下:

双击代码全选
1
2
3
4
5
6
7
8
9
10
11
12
13
$ 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值