저는 Xcode 4.2에서 iPhone 5.0 프로젝트를 만들고 있으며 단위 테스트가 실행될 때 코드 적용 범위를 찾고 싶습니다. 나는 Xcode 환경에 대해 아주 익숙하다. 그리고 나는 here 단계를 따라왔다. 테스트 대상의 빌드 설정을 올바르게 수정하고 "libprofile_rt.dylib"파일을 잘 링크 할 수 있습니다.Xcode 4.2에서 코드 커버리지를 볼 수 없습니다
이 시점에서 (Command-U를 사용하여) 테스트를 실행하면 코드가 컴파일되고 테스트가 통과됩니다. 나는 here이라고 기술 된 문제를 만나지 않는다. 또한 CoverStory을 설치했습니다.
첫 번째 링크의 저자는 "Just run your unit tests and view the code coverage data as usual"; 그러나 .../Objects-normal/i386
을 찾을 수 없습니다.
#import "SomeClass.h"
@implementation SomeClass
@synthesize someValue;
-(void)performWork:(BOOL)now withValue:(int)value {
if (now) {
someValue = value;
}
else {
someValue = value - 1;
}
}
@end
및 테스트 클래스 :
그냥 내가 다음 클래스와 함께 새로운 프로젝트를 만들어 가지 작업을 진행하는 이상적
#import "CodeCoverageTests.h"
#import "SomeClass.h"
@implementation CodeCoverageTests
- (void)testExample {
SomeClass *obj = [[SomeClass alloc] init];
[obj performWork:YES withValue:3];
STAssertEquals(obj.someValue, 3, @"Value was not 3");
}
@end
, 나는 어떤 방법으로 통지하고 싶습니다 테스트가 실행될 때 performWork
메서드의 else
절이 절대로 실행되지 않습니다. 나는 새로운 컴파일러와 함께 할 노력하고있어에 대한 지원이 없다는 것을 근본 문제가
- 인가 :
나는 따라서 다음과 같은 질문이?
- 위의 링크 된 질문에 대한 응답으로 user chown으로 설명하는 유일한 솔루션입니까?
- 2)의 해결 방법을 수행하면 CoverStory (또는 이와 비슷한)를 사용할 수 있습니까?
는 업데이트 : 어떤 투쟁 후 , 나는 마지막으로 "SomeClass.gcno"와 "SomeClass.gcda"파일 (감사 @bjhomer - this link 참조)의 위치를 찾을 수 있었고, 그들은 performWork
에있는 조건문의 if
부분이 커버되었고 (else
은 아니 었음) 아름답게 묘사했습니다.
- (void)testExample
{
SomeClass *obj = [[SomeClass alloc] init];
[obj performWork:NO withValue:3];
STAssertEquals(obj.someValue, 2, @"Value was not 2");
}
다시 건물과 유닛 테스트를 다시 실행 한 후, 나는 .gcno 및 .gcda 파일을 다시로드 다음과 같이 확인하기 위해, 나는 테스트를 수정했습니다. CoverStory는 적용 범위가 performWork
메서드의 else
부분으로 변경되었음을 나타냅니다. 하나 개의 작은주의 그러나이 있었다 :
- 내가 만든 될 "SomeClass.gcno"와 "SomeClass.gcda"파일을 위해 (도시 here로하지
<TargetNameTest>
)에<TargetName>
의 빌드 설정을 수정할 필요...<TargetName>.build/Objects-normal/i386/
디렉토리에 있습니다.
다시 도움 주셔서 감사합니다.
응답 해 주셔서 감사합니다. 나는 [이 응답] (http://stackoverflow.com/a/4282467/800788)에서 파일을 찾기 위해 _how_을 (를) 찾을 수있었습니다. – Meesh