TEST_F VS Test

上一篇简要介绍了测试框架的安装以及测试函数TEST的使用,这里介绍一下TEST_F的使用。TEST_F与TEST的区别是TEST_F提供了一个初始化函数(SetUp)和一个清理函数(TearDown),在TEST_F中使用的变量可以在初始化函数SetUp中初始化,在TearDown中销毁,并且所有的TEST_F是互相独立的,都是在初始化以后的状态开始运行,一个TEST_F不会影响另一个TEST_F所使用的数据,下面是一个例子。  需要测试的代码:双击代码全选123456789101112131415161718192021222324252627A.h#ifndef A_H#define A_Hclass A{private:  int _a;public:  A( int a );  ~A( );  void add( int a );  int getA( );};#endifA.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双击代码全选123456789101112131415161718192021222324252627#include "A.h"#include 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*/  主函数(同上一个例子相同)双击代码全选12345678main.cpp#include int main(int argc, char * argv[]){  testing::InitGoogleTest(&argc, argv);  return RUN_ALL_TESTS();  return 0;}  编译后执行的结果如下:双击代码全选12345678910111213$ gtester mainTEST: 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、付费专栏及课程。

余额充值