2016-10-17 10 views
-1

나는 다음을 수행 다른 gtest을 가지고 있고 그것을 잘 작동합니다 :gtest 설정 해체 TestEnvironment - 변수 클래스 문제

TEST(TEST1, TestName) 
{ 
ClassName env; 
const String original = env(Con::WorkingDir); 

Con c = env; 
} 

을하지만, 나는이 다른 gtest 클래스 설정하고 전체에 걸쳐 개최되고 싶지 테스트 픽스쳐. 그러나이 오류 메시지가 나타납니다.

적절한 연산자가없는 클래스 형식의 개체 또는 변환 함수가 함수 유형에 대한 포인터로 호출됩니다.

나는 initialize gtest을보고 있는데, 내가 무엇을 놓치고 있는지 잘 모르겠다. 내가 익숙하지 않은 정적 변수를 사용할 수도 있습니다. 클래스 네임 정적 싶지 않아요.

무엇이 잘못 되었나요?

//this is intended to setup env to use in teardown. 
class TestEnvironment : public ::testing::Environment { 
public: 
static String getEn() { 
    ClassName env; 
    static const String sString = env(Con::WorkingDir); //env has the error message here 
    return sString; 
} 
} 

class UnitTest : public ::testing::Test 
{ 
public: 
virtual void SetUp() { 
    // 
} 

virtual void TearDown() { 
    //set env back to initial value 
    getEn(); 
    //process env info; 
} 
+0

클래스 '클래스 이름'에 대해 자세히 알려주십시오. 'static const String sString = env (Con :: WorkingDir); '과 같은 명령문은'env'가 함수 객체이고, 에러 메시지가 그렇지 않다면 컴파일 할 수 있습니다. 나는 당신이'ClassName'의 정의를 추가하여 질문을 편집 할 것을 제안합니다. –

+0

정적 인 const를 제거하여 작동 시켰습니다. – Michele

+0

클래스가 함수 객체가 아닙니다. 나는 그것에 대해 들어 본 적이 없다. – Michele

답변

0
class UnitTest : public ::testing::Test { //can't use Environment here because of name conflict in our code, although that was used by static const variable setup in example link. 
public: 
String orig; 
} 

class UnitTest : public ::testing::Test 
{ 
public: 
virtual void SetUp() { 
    orig = code; 
} 

virtual void TearDown() { 
    //process orig; 
} 

그것은 우리의 코드는 const를 문자열을 찾고에도 불구하고, 우리가 CONST로 저장하지 않는 것이 밝혀졌다.