排除时间测试

发布于 2024-11-03 23:14:39 字数 610 浏览 4 评论 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 毫秒,我如何从总测试时间中排除创建类所用的时间?

Hello i have some class for example "Math":
header file:

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

and cpp file:

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

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

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

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

also i have test of this file:

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

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

when i run this test i see that test passed and time of this test is 1500ms, how i can exclude from total test time, time elapsed on creating class?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

甜宝宝 2024-11-10 23:14:39

你就不能这样做吗?

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

Math math;

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

Can't you just do this?

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

Math math;

TEST(Speed, Math)
{
    Math *m=&math;
    EXPECT_LT(3.14,m->returnPi());
}
星星的轨迹 2024-11-10 23:14:39

创建一个构建您的 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());

}

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

Create a test fixture that constructs your Math class, then make your tests use it. GTest will create a new fixture for each test.

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

}

But really I think your question is a bit flawed you shouldn't exclude that from total test time. If you are trying to profile particular operations you should use a timer and output the elapsed time for what you are profiling. Total test time should be how long it took to run your tests (and that of course includes setup time).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文