鐪嬩簡gtest鐨勪竴涓猻imple錛屽叾涓湁嫻嬭瘯榪愯鏃墮棿鐨勬柟娉曪紝浣嗕嬌鐢ㄨ搗鏉ョ◢寰礋璐o紝鍥犳鍋氫簡涓涓畝鍗曠殑鎵╁睍銆?/p>
鎵╁睍鍐呭錛?br />1. TEST_T(test_case_name, test_name)錛岀敤浜庡畾涔夎繍琛屾椂闂存祴璇曠敤渚嬨?br />2. TEST_T_SHOWTIME()錛屾墦寮鎵撳嵃嫻嬭瘯鐢ㄤ緥榪愯鏃墮棿鎵撳嵃寮鍏熾?br />3. EXCEPT_TIME(second)鍜孉SSERT_TIME(second)錛屾柇璦錛宻econd涓篸ouble綾誨瀷錛屾祴璇曡繍琛屾椂闂存槸鍚﹀皬浜巗econd銆?/p>
浣跨敤璇存槑錛?br />鍚戞甯鎬嬌鐢ㄤ竴鏍鳳紝鍙槸鍦ㄩ渶瑕佹椂闂存祴璇曟椂include “gtest_e.h”鍗沖彲錛屽綋鐒朵篃寰楁妸鐩稿簲鐨勫簱閾炬帴鍒版墽琛屾枃浠朵腑銆?/p>
鍏蜂綋瀹炵幇錛?br />婧愭枃浠秅test_e.h----

/**//**
* gtest_e.h
*/

#ifndef GTEST_E_H_
#define GTEST_E_H_

#include "gtest_time.h"

#define TEST_T(test_case_name, test_name)\
GTEST_TEST(TIME_##test_case_name, test_name, ::TimeTest)

#define TEST_T_SHOWTIME() TimeTest_setShowFlag(1)

#define ASSERT_TIME(time) if(TimeTest_setTimePoint() - time > 0) \
FAIL() << "Time: running " << TimeTest_getTime() << "(s) > " << time << "(s)"

#define EXCEPT_TIME(time) if(TimeTest_setTimePoint() - time > 0) \
ADD_FAILURE() << "Time: running " << TimeTest_getTime() << "(s) > " << time << "(s)"

#endif /* GTEST_E_H_ */
婧愭枃浠秅test_time.h----

/**//**
* gtest_time.h
*/

#ifndef GTEST_TIME_H_
#define GTEST_TIME_H_

#include <gtest/gtest.h>

class TimeTest: public testing::Test


{
public:
inline void TimeTest_setShowFlag(int flag)

{
show_time_ = flag;
}

inline double TimeTest_getTime()

{
return end_time_ - start_time_;
}

double TimeTest_setTimePoint();

protected:
double start_time_;
double end_time_;
int show_time_;

virtual void SetUp();
virtual void TearDown();
};

#endif /* GTEST_TIME_H_ */
婧愭枃浠秅test_time.cpp----

/**//**
* gtest_time.cpp
*/

#include <iostream>
#include "gtest_time.h"

using namespace std;

#if defined(WIN32)
#include <sys/timeb.h>
double now()


{
struct _timeb current;
_ftime(¤t);
return (((double) current.time) + (1.0 * current.millitm) * 0.000001);
}
#else
double now()


{
struct timeval current;
gettimeofday(¤t, NULL);
return (((double) current.tv_sec) + 1.0e-6 * ((double) current.tv_usec));
}
#endif

void TimeTest::SetUp()


{
start_time_ = now();
end_time_ = 0;
TimeTest_setShowFlag(0);
}

void TimeTest::TearDown()


{
if (show_time_)

{
double used_time = TimeTest_setTimePoint();
cout << "[ TIME ] used time: " << used_time << "(s)"
<< endl;
}
}

double TimeTest::TimeTest_setTimePoint()


{
end_time_ = now();
return TimeTest_getTime();
}

浠ヤ笂鍐呭鍙槸涓涓畝鍗曠殑瀹炵幇錛屾病鏈夎繃澶氱殑嫻嬭瘯錛屼笖鏃墮棿綺懼害涓嶅錛岃宸緝澶с?img src ="http://www.shnenglu.com/volant/aggbug/60201.html" width = "1" height = "1" />
]]>