gtest的一個(gè)簡單擴(kuò)展(運(yùn)行時(shí)間測試)的實(shí)例
Posted on 2008-08-27 23:34 小夜 閱讀(3144) 評(píng)論(0) 編輯 收藏 引用 所屬分類: [07] 單元測試 、[51] C&C++上一篇中對(duì)gtest進(jìn)行了一個(gè)簡單的擴(kuò)展,本文通過實(shí)例測試并介紹這個(gè)擴(kuò)展的用法。
首先實(shí)現(xiàn)兩個(gè)Fibonacci函數(shù),然后對(duì)這兩個(gè)函數(shù)進(jìn)行測試:
Fibonacci_1,使用循環(huán)實(shí)現(xiàn):
unsigned int Fibonacci_1(unsigned int n)
{
unsigned int i;
unsigned int f0 = 1, f1 = 1, f2;
for (i = 1; i < n; i++)
{
f2 = f0 + f1;
f0 = f1;
f1 = f2;
}
return f1;
}
Fibonacci_2,使用遞歸實(shí)現(xiàn):
unsigned int Fibonacci_2(unsigned int n)
{
switch (n)
{
case 0:
return 1;
case 1:
return 1;
default:
return Fibonacci_2(n - 1) + Fibonacci_2(n - 2);
}
}
測試用例:
TEST_T(Fibonacci_Recursive, 30)
{
Fibonacci_2(30);
ASSERT_TIME(0.1);
}
TEST_T(Fibonacci_Loop, 30)
{
Fibonacci_1(30);
ASSERT_TIME(0.1);
}
TEST_T(Fibonacci_Recursive, 40)
{
TEST_T_SHOWTIME();
Fibonacci_2(40);
EXCEPT_TIME(0.1);
ASSERT_TIME(1) << "\nUsed too long time!";
}
TEST_T(Fibonacci_Loop, 40)
{
TEST_T_SHOWTIME();
Fibonacci_1(40);
EXCEPT_TIME(0.1);
ASSERT_TIME(1) << "\nUsed too long time!";
}
測試結(jié)果:
[==========] Running 4 tests from 2 test cases.
[----------] Global test environment set-up.
[----------] 2 tests from TIME_Fibonacci_Recursive
[ RUN ] TIME_Fibonacci_Recursive.30
[ OK ] TIME_Fibonacci_Recursive.30
[ RUN ] TIME_Fibonacci_Recursive.40
FibonacciTest.cpp:47: Failure
Failed
Time: running 2.9995(s) > 0.1(s)
FibonacciTest.cpp:48: Failure
Failed
Time: running 2.9995(s) > 1(s)
Used too long time!
[ TIME ] used time: 2.9995(s)
[ FAILED ] TIME_Fibonacci_Recursive.40
[----------] 2 tests from TIME_Fibonacci_Loop
[ RUN ] TIME_Fibonacci_Loop.30
[ OK ] TIME_Fibonacci_Loop.30
[ RUN ] TIME_Fibonacci_Loop.40
[ TIME ] used time: 0(s)
[ OK ] TIME_Fibonacci_Loop.40
[----------] Global test environment tear-down
[==========] 4 tests from 2 test cases ran.
[ PASSED ] 3 tests.
[ FAILED ] 1 test, listed below:
[ FAILED ] TIME_Fibonacci_Recursive.40
實(shí)例中測試了四個(gè)測試用例,分別測試了兩個(gè)函數(shù)分別計(jì)算Fibonacci(30)和Fibonacci(40)所花費(fèi)的時(shí)間。測試用例1、2比較簡單,僅有一個(gè)ASSERT_TIME斷言用于測試運(yùn)行到此該測試用例花費(fèi)的時(shí)間。測試用例3、4,增加了兩條語句:TEST_T_SHOWTIME(),測試用例結(jié)束后打印執(zhí)行時(shí)間;EXCEPT_TIME斷言,這里只是測試以下EXCEPT_TIME和ASSERT_TIME的區(qū)別,前者繼續(xù)執(zhí)行后續(xù)語句,后者則結(jié)束當(dāng)前的測試用例。



![Subscribe to [00] 隨筆(3)](/Skins/KJC/Images/xmlsmall.gif)
