2012-06-22 15 views
1

현재 테스트 대상 외부에서 호출 된 메서드가 올바르게 처리되는지 확인하는 자동화 된 테스트를 작성하려고합니다. 다음은 구체적인 예입니다.배포 대상 외부의 sdk 사용 인스턴스 찾기

내 응용 프로그램이 Mac OS X 10.8 SDK를 사용하도록 설정되었으며 배포 대상이 10.6으로 설정되었습니다.

나는 종종 setTimingFunciton : 메서드를 사용합니다. 그것은 10.7에 도입되었습니다.

[[NSAnimationContext currentContext] setTimingFunction : [CAMediaTimingFunction functionWithName : kCAMediaTimingFunctionEaseIn]];

대부분의 경우이 메서드 호출을 올바르게 확인하여 메서드가 있는지 또는 해당 OS가 올바른 버전인지 확인합니다. 그러나 나는 그것을 놓쳤다. 그리고 거의 실행되지 않은 코드 경로에 있으므로 베타 테스트조차도이를 인식하지 못했습니다. 그것은 나중에 나를 많이 물지 않기 위해서 돌아왔다.

통합 서버 나 다른 스크립트 된 회귀 테스트에 배치 할 수있는 이와 같은 것을 테스트하는 자동화 된 방법을 만들고 싶습니다. 그것은 자동으로 확인하는 방법이 있어야하는 것처럼 보였습니다.

10.6 sdk로 다시 컴파일하면 "modern obj-c"로 인해 많은 오류가 발생합니다. 물론 10.8 SDK를 사용할 때 이러한 오류는 발생하지 않습니다. 주의 깊게 살펴보면 오류를 찾아서 메서드 호출을 찾을 수 있습니다.하지만 너무 복잡하고 수동적입니다.

사람이 수백 가지의 잘못된 오류 라인을 통해 사람을 골라 내지 않는 이러한 종류의 것들을 정적으로 검사하는 방법을 알고 있습니까?

P. 나는 이것을 읽었습니다 : How to check if not available methods are used if deployment target < base sdk? 어떤 수동 흐름을 통해 그들을 파고하는 것이 좋습니다. 문제는, 인간의 방법으로 저를 실패한 것입니다. 나는 하나를 놓쳤다. 뭔가 좀 더 확신하고 싶습니다.

답변

0

나는이 기술을 this answer에서 사용했으며 훌륭하게 작동했습니다. 완전히 자동이며 아무 것도 놓치지 않습니다.

0

다음은 아이디어입니다. undef (무결점)하고 가용성 매크로를 재정의하면 Clang이 반대하지만 프로그램 흐름에 영향을 미치지 않습니다. Clang을 실행하십시오.