2011-04-28 3 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

+0

테스트 프레임 워크에 대해 확실하지 않은 경우 테스트 내에서 만들기보다는 '수학'의 인스턴스를 전달할 수 있습니까? – Nim

+0

Nim 그것은 실제 프로젝트에서 예제입니다. 각 테스트에 대한 예제 클래스를 만들고 그 후에 그의 함수를 테스트해야합니다. –

답변

1

그냥 할 수 없습니까?

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

Math math; 

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

아니요, 모든 테스트 케이스에서 클래스를 생성해야합니다. –

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

} 

하지만 정말로 내 질문은 전체 테스트 시간에서 제외하지 말아야 할 결함이 있다고 생각합니다. 특정 작업을 프로파일 링하려는 경우 타이머를 사용하여 프로파일 링중인 시간에 대한 경과 시간을 출력해야합니다. 총 테스트 시간은 테스트를 실행하는 데 걸리는 시간이어야합니다 (물론 설치 시간이 포함되어야합니다).

관련 문제