2011-04-28 59 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()); 

} 

但是真的,我認爲你的問題有點有缺陷,你不應該排除總測試時間。如果您嘗試對特定操作進行概要分析,則應使用計時器並輸出所分析的時間。總測試時間應該是運行測試需要多長時間(並且當然包括設置時間)。