2011-04-28 62 views
0

你好,我有例如 “数学” 的一些类: 头文件:Exlude时间测试

class Math 
{ 
public: 
    Math(void); 
    double returnPi(); 
    ~Math(void); 
}; 

和CPP文件:

#include <windows.h> 
#include "Math.h" 

Math::Math(void) 
{ Sleep(500) ;} 

Math::~Math(void) 
{ Sleep(500) ;} 

double Math::returnPi() 
{ Sleep(1000) ; 
    return 3.14159265; 
} 

我也有这个文件的测试:

#include "..\gtest\gtest.h" 
#include "Math.h" 

TEST(Speed, Math) 
{ 
    Math *m=new Math(); 
    EXPECT_LT(3.14,m->returnPi()); 
} 

当我运行这个测试时,我看到测试通过了,这个测试的时间是1500ms,我怎么能从总测试时间中排除,创建课程的时间已经过去了?

+0

C没有课。标记已移除 – pmg 2011-04-28 08:22:10

+0

不确定您的测试框架,您是否可以不通过'Math'的实例而不是在测试中创建? – Nim 2011-04-28 08:23:16

+0

尼姆它是例子,在真实的项目中,我需要为每个测试创建示例类,然后测试他的功能 – 2011-04-28 08:28:34

回答

1

难道你不能这样做吗?

#include "..\gtest\gtest.h" 
#include "Math.h" 

Math math; 

TEST(Speed, Math) 
{ 
    Math *m=&math; 
    EXPECT_LT(3.14,m->returnPi()); 
} 
+0

不,我需要在所有测试用例中创建类 – 2011-04-28 08:32:44

0

创建一个测试夹具,构建您的Math类,然后让您的测试使用它。 GTest将为每个测试创建一个新的夹具。

class MathTest : public ::testing::Test 
{ 
    Math* math; 
    virtual void SetUp() 
    {  
     math = new Math(); 
    } 

    virtual void TearDown() 
    { 
     delete math; 
    } 
}; 

TEST_F(MathTest, OperatorTest) 
{ 
    EXPECT_LT(3.14,math->returnPi()); 

} 

但是真的,我认为你的问题有点有缺陷,你不应该排除总测试时间。如果您尝试对特定操作进行概要分析,则应使用计时器并输出所分析的时间。总测试时间应该是运行测试需要多长时间(并且当然包括设置时间)。