Исключить время теста - PullRequest
0 голосов
/ 28 апреля 2011

Здравствуйте, у меня есть класс, например "Math": заголовочный файл:

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 ]

1 голос
/ 28 апреля 2011

Разве вы не можете просто сделать это?

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

Math math;

TEST(Speed, Math)
{
    Math *m=&math;
    EXPECT_LT(3.14,m->returnPi());
}
0 голосов
/ 15 марта 2013

Создайте тестовое устройство, которое создает ваш класс 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());

}

Но на самом деле я думаю, что ваш вопрос несколько некорректен, вы не должны исключать его из общего времени тестирования.Если вы пытаетесь профилировать определенные операции, вы должны использовать таймер и вывести истекшее время для того, что вы профилируете.Общее время тестирования должно быть равно времени, которое потребовалось для выполнения ваших тестов (и это, конечно, включает время установки).

...