排除时间测试

时间:2011-04-28 08:20:27

标签: c++ visual-studio-2005 googletest

您好我有一些课程,例如“数学”: 头文件:

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());
}

当我运行此测试时,我看到测试通过,此测试的时间是1500毫秒,我如何排除总测试时间,创建课程所用的时间?

2 个答案:

答案 0 :(得分:1)

你不能这样做吗?

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

Math math;

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

答案 1 :(得分: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());

}

但实际上我认为你的问题有点瑕疵,你不应该从总测试时间中排除它。如果您尝试对特定操作进行概要分析,则应使用计时器并输出正在进行概要分析的已用时间。总测试时间应该是运行测试所需的时间(当然还包括设置时间)。