2012-07-02 8 views
1

단위 테스트에서이 두 줄이 있습니다. STAssertTrue 테스트를 주석 처리하면 데이터가 문제없이 파일에 쓰여지고 파일에 쓰는 것은 YES이됩니다.STAssertTrue가 예상대로 작동하지 않습니다.

BOOL writeResult = [winePDF writeToFile:wineDocumentDirectoryFilename atomically:YES]; 
STAssertTrue((writeResult), @"Didn't write to file"); 

이 테스트는 통과 될 것으로 예상되지만 실패합니다. 시도했습니다.

STAssertEquals(YES, writeResult, @"Didn't write to file"); 

또한 실패했습니다.

단위 테스트에 많은 도움이되지 않아 귀하의 정보에 대한 답변을 기대하면서 이마를 두드리지 마십시오.

답변

1

코드가 올바른 것 같습니다. 쓰기가 성공 했습니까? winePDF가 아닌지 확실합니까?

나는 당신의 첫 번째 라인 전에 추가 제안 :

if(! writeResult) { 
    STFail(@"Didn't write to file"); 
} 

그래서 당신은 당신의 테스트 코드는 하나 확실 할 것이다 :

STAssertNotNil(winePDF, @"winePDF should not be nil"); 
+0

예, 확인했습니다. 어설 션없이 파일에 쓰면 파일이 만들어집니다. 검사의 행위로 문제가 발생하는 것 같습니다. –

+1

이 테스트는 함수가 반환 된 후에 실행되므로 어설 션이 작동하지 않으면 파일이 계속 표시됩니다. 반환 값 로깅을 시도 했습니까? –

+1

성공적인 테스트를 거치기 전에 테스트를하기 전이나 후에 파일을 삭제하기 위해 유닛 테스트에 무언가를 추가 할 수 있습니다. – jrc

2

당신은 디버깅의 더 나은 옵션에 다음과 같은 코드를 사용할 수 있습니다 작동하지 않거나 코드가 잘못되어 있습니다.

+0

다음과 같이 파일에 쓰기위한 코드를 변경하려고하십니까? 'BOOL writeResult = [winePDF writeToFile : wineDocumentDirectoryFilename atomically : NO]; STAssertTrue ((writeResult), @ "파일에 쓰지 않았습니다."); – rshahriar

관련 문제