posts - 26, comments - 2, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

上一篇中对gtest进行了一个简单的扩展,本文通过实例测试并介绍这个扩展的用法。

首先实现两个Fibonacci函数,然后对这两个函数进行测试:

Fibonacci_1,使用循环实现:

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,使用递归实现:

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!";
}


测试结果:

 

[==========] 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

 

实例中测试了四个测试用例,分别测试了两个函数分别计算Fibonacci(30)和Fibonacci(40)所花费的时间。测试用例1、2比较简单,仅有一个ASSERT_TIME断言用于测试运行到此该测试用例花费的时间。测试用例3、4,增加了两条语句:TEST_T_SHOWTIME(),测试用例结束后打印执行时间;EXCEPT_TIME断言,这里只是测试以下EXCEPT_TIME和ASSERT_TIME的区别,前者继续执行后续语句,后者则结束当前的测试用例。

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理