[objective-c] Objective-C 코드를 단위 테스트하는 가장 좋은 방법은 무엇입니까?

Objective-C 코드를 단위 테스트하기 위해 어떤 프레임 워크가 있습니까? Apple Xcode와 잘 통합 된 프레임 워크를 원합니다.



답변

Xcode에는 Objective-C 단위 테스트 프레임 워크 인 OCUnit 과 유사한 XCTest가 포함되어 있으며 프로젝트 빌드 프로세스의 일부로 XCTest 기반 단위 테스트 실행을 완벽하게 지원합니다. Xcode의 단위 테스트 지원은 Xcode 개요 : 단위 테스트 사용에 설명되어 있습니다.

Xcode에서 이틀 동안 Xcode 단위 테스트로 몇 가지 일반적인 작업을 수행하는 방법에 대한 일련의 웹 로그 게시물을 작성했습니다.

XCTest 대신 OCUnit을 사용하더라도 개념은 거의 동일합니다.

마지막으로 Cocoa 사용자 인터페이스 테스트를 작성하는 방법에 대한 글도 썼습니다. Cocoa가 구성되는 방식은 이벤트 루프 나 대부분의 경우와 같은 것을 회전시킬 필요가 없기 때문에 비교적 간단합니다.

이를 통해 모델 레벨 코드뿐만 아니라 컨트롤러 레벨 및 뷰 레벨 코드에 대한 테스트 중심 개발을 수행 할 수 있습니다.


답변

Gabriel Handford의 GHUnit 을 확인하십시오 :

“GHUnit의 목표는 다음과 같습니다.

XCode 내에서 단위 테스트를 실행하여 XCode 디버거를 완전히 활용할 수 있습니다. 테스트를 시각화하는 데 도움이되는 간단한 GUI. 스택 추적을 표시합니다. 간단한 (또는 그렇지 않은) 대상 설정으로 프레임 워크 (Cocoa 앱용)로 설치 가능해야합니다. “아이폰 프로젝트에 쉽게 패키징 할 수 있습니다.”


답변

iPhone 용 Google 툴박스 테스트 장비를 사용하기 시작했고 그 기능이 훌륭했습니다.

google-toolbox-for-mac


답변

OCUnit을 확인하십시오 . Apple의 개발자 네트워크에는 훌륭한 소개가 있습니다.


답변

Mac 용 Google 툴박스 (GTM) 프로젝트는 Apple의 SenTestingKit 프레임 워크 (OCUnit을 기반으로 함)를 확장 / 확장합니다. 그들이 프로젝트 사이트에서 말하는 것처럼 :

GTM에는 표준 SenTestingKit가 몇 가지 향상되어 UI 단위 테스트, 자동 바인딩 단위 테스트, 로그 추적 및 iPhone에서 단위 테스트를 수행 할 수있을뿐만 아니라 정적 및 동적 코드 테스트 도구도 사용할 수 있습니다.

사용자 인터페이스 테스트에 대한 다음 의견을 참고하십시오.

GTM은 사용자 인터페이스 단위 테스트를 광범위하게 지원합니다. 거의 모든 표준 Cocoa / UIKit UI 객체의 이미징 및 / 또는 내부 상태 테스트를 지원하며,이 지원을 자신의 UI 객체로 쉽게 확장 할 수 있습니다.

사용 방법에 대한 지침은 ” 코드 확인 및 단위 테스트 “페이지를 참조하십시오.


답변

저는 GHUnit이 Objective-C의 가장 고급 테스트 프레임 워크라는 결론에 도달했습니다. 나는 짓을 검거을 내 블로그에 프레임 워크를 테스트합니다. 배포 (iphone, 시뮬레이터 또는 mac OS 기본) 측면에서 가장 유연하고 기능을 주장합니다. GTM을 기반으로하기 때문에 SenTestingKit에 비해 GTM의 모든 장점을 상속 받지만 더 많은 기능을 추가합니다. 또 다른 보너스는 그것이 매우 적극적으로 유지되고 있다는 것입니다.

OCMock 을 GHUnit 에 통합하려는 노력을 기울였습니다 . github 에서 코드를 얻을 수 있습니다 .


답변

나는 이것이 오래된 질문이라는 것을 알고 있지만 xUnit 스타일 테스트 (Test :: Unit, JSUnit, JUnit 등)보다 BDD 스타일 테스트 (rspec, Jasmine 등)를 선호한다면 Cedar를 확인하는 것이 좋습니다. . Cedar는 이제 언어가 클로저를 지원하므로 BDD 스타일 테스트를 Objective-C에 제공합니다.

우리는 Pivotal Labs 의 iOS 프로젝트에 Cedar를 기쁘게 사용 하고 있으며 개선을 위해 적극적으로 노력하고 있습니다. cedar-discuss@googlegroups.com에서 의견이나 제안을 환영합니다