2012-03-21 3 views
3

HippoMocks 문서는 Windows API 함수를 포함한 C 함수를 모의 할 수 있다고 말합니다. 그러나 어떤 예제도 찾을 수 없습니다. 누구든지 Windows API 함수 조롱을위한 예제를 줄 수 있습니까?HippoMocks - Win32 API 함수 모의 방법

http://www.hippomocks.com/wiki/index.php/What_can_be_mocked

+2

그 프로젝트는 멍청 해 보입니다. 당신이 정말로 의지하고 싶습니까? –

+0

그래, 그렇게 보인다. 같은 기능을 가진 대안을 아십니까? – goto

답변

4

은 그 확실히있어, 밖으로 새 릴리스를 얻을 필요가있다.

다른 함수와 마찬가지로 API 함수를 모의 할 수 있습니다. API 함수를 호출 할 객체를 지정하지 않는다는 점을 제외하고는 (다른 함수가 없기 때문에) API 함수를 모의 할 수 있습니다. 정규 libc API 함수를 사용하여 리눅스에서 많은 것을 테스트 해 보았습니다. 윈도우 다르지 없어야합니다,하지만 내 예는 종료 될 것입니다 이유는 다음과 같습니다이 돌아 오지 않을 지정된 것을 포함하여, 모든 기능을 위해 작동

void test() { 
    MockRepository mocks; 
    mocks.ExpectCallFunc(&exit).With(2).Throw(std::exception()); 
} 

참고. HippoMocks가 반환해서는 안되는 함수를 조롱하라고 말하면 리턴 코드가 생성되지 않아 오류가 발생할 수 있습니다. 대신에 특정 테스트 예외를 던집니다. 이제 생각해 보면, VS2008을 사용하는 Windows에서 문자 그대로 탈출구를 벗어난 opcode가없는 곳이있었습니다.

희망을 얻으시길 바랍니다. 가장 최근의 커밋을 가져 오려면 Git (Assembla)에서 마지막 릴리즈에 아직 포함되어 있지 않아야합니다.

+0

SVN의 업데이트 된 코드가 VS2010에서 컴파일되지 않아 곧 릴리스 할 수 있습니까? ExpectCall()에는 두 개의 매개 변수가 필요하다는 것도 있습니다. 나는 처음에 NULL을주고있다. 'TCall goto

+0

HippoMocksTest (I, J, K, L, M, N, O, P) 솔루션은 VS2008 및 VS2010에서 디버그 및 릴리스 모드의 모든 48 개 테스트를 컴파일하고 통과합니다. ExpectCall()을 사용하는 방식에 문제가 있습니다. 귀하의 예제에서 코드를 작성하면 컴파일러에서'매크로에 대한 실제 매개 변수가 충분하지 않습니다 '라고 말합니다. ExpectCall' – goto

+0

Aah ... 매크로를 오버로드 할 수 없으므로 변경해야 할 수도 있습니다. 소멸자를위한 ExpectCallDestructor가 있습니다 (소멸자의 주소를 취할 수는 없지만 조롱 할 수 있기 때문에), 정규적인 가상 멤버 함수의 경우 ExpectCall, 플랫 함수의 경우 ExpectCallFunc가 있습니다. – dascandy