看了gtest的一个simpleQ其中有试q行旉的方法,但用v来稍微负责,因此做了一个简单的扩展?/p>
扩展内容Q?br />1. TEST_T(test_case_name, test_name)Q用于定义运行时间测试用例?br />2. TEST_T_SHOWTIME()Q打开打印试用例q行旉打印开兟?br />3. EXCEPT_TIME(second)和ASSERT_TIME(second)Q断aQsecond为doublecdQ测试运行时间是否小于second?/p>
使用说明Q?br />向正怋用一P只是在需要时间测试时include “gtest_e.h”卛_Q当然也得把相应的库链接到执行文件中?/p>
具体实现Q?br />源文件gtest_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_ */
源文件gtest_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_ */
源文件gtest_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();
}

以上内容只是一个简单的实现Q没有过多的试Q且旉_ֺ不够Q误差较大?img src ="http://www.shnenglu.com/volant/aggbug/60201.html" width = "1" height = "1" />
]]>