2011-08-24 3 views
0

필자가 작성한 클래스에 대해 CXX 유닛 테스트를 작성하고 있습니다. 이전에 CXX 테스트를 작성한 적도 없습니다 (이 프레임 워크 만 사용할 수 있습니다). 출력을 테스트 할 수 있도록 클래스 내에 포함 된 함수를 호출하려고합니다. 예상 할 수있는 것이지만, 이것을 수행 할 수 있는지 확신 할 수 없습니다. 그렇다면 어떻게해야합니까?CXX 테스트에서 C++ 함수에 액세스

Test.h: 
class Test..... { 
    public: 
     std::string GenerateHash(const std::string& user, const std::string& url) const; 
    ... 
} 


Test.cpp: 
string 
Test::GenerateHash(const string& user, const string& urrl) const { 
    ... 
} 

헤더 파일을 CXX 테스트에 포함했지만 GenerateHash 함수에 액세스 할 수 없습니다.

Test.cxx_h: 
void testCheckHashGeneration(void) { 
    TS_ASSERT_EQUALS (GenerateHash("testuser", "http://www.stackoverflow.com"), "DFEGEC....."); 
} 

Error: error: âGenerateHashâ was not declared in this scope 

는 또한 시도 :

Test.cxx_h: 
void testCheckHashGeneration(void) { 
    Test test; 
    TS_ASSERT_EQUALS (test->GenerateHash("testuser", "http://www.stackoverflow.com"), "DFEGEC....."); 
} 

Error: error: âTestâ has not been declared 

어떤 도움이 크게 감사합니다.

+0

당신이 테스트 객체를 생성나요 test->GenerateHash

그렇지 않으면보다는 test.GenerateHash를 사용할 수 있습니까? 더 많은 코드를 입력하십시오. –

+0

어떻게 접속하려고합니까? 어떻게 작동하지 않습니까? 어떤 오류가 발생합니까? – sth

답변

0

첫 번째 경우에는 Test 인스턴스없이 멤버 함수를 호출하려고합니다. 두 번째 경우와 마찬가지로 테스트를 호출해야합니다.

두 번째 경우 실제로 개체가있을 때 개체에 대한 포인터가있는 구문을 사용하여 멤버를 호출하려고합니다. '->'입니다. 당신은 두 번째과 같이보고 싶지 : 당신은 어떻게 든 테스트 *이 있다면

test->GenerateHash(...) 

, 당신은 객체에 대한 포인터를 위해 개체에 대한

test->GenerateHash(...) 

사용하는 점, 화살표처럼 호출 할 수 있습니다.

더 많은 코드와 오류 출력이 도움이 될 것입니다.

0

GenerateHash 함수가 static 메서드가 될 수 있으면 정적으로 만듭니다. 그런 다음 Test::GenerateHash(/*your arguments*/);을 사용하여

처음에 GenerateHash을 호출하는 방법을 고려할 때,이 방법은 정적 방법이어야한다고 생각합니다. 실행이 Test 클래스의 특정 인스턴스에 종속되지 않으면 정적 일 수 있습니다.

관련 문제