0

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

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 毫秒,我如何从总测试时间中排除创建课程所用的时间?

4

2 回答 2

1

你不能这样做吗?

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

Math math;

TEST(Speed, Math)
{
    Math *m=&math;
    EXPECT_LT(3.14,m->returnPi());
}
于 2011-04-28T08:30:24.317 回答
0

创建一个构建您的数学类的测试夹具,然后让您的测试使用它。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());

}

但我真的认为你的问题有点缺陷,你不应该将它排除在总测试时间之外。如果您尝试分析特定操作,则应使用计时器并输出所分析内容的经过时间。总测试时间应该是运行测试所花费的时间(当然包括设置时间)。

于 2013-03-15T17:49:11.797 回答