2013-08-30 2 views
0

에 관계없이 내 KIFTestScenario 또는 KIFTestStep들이 다음과 같은 오류를 반환하는 작성하는 방법 내 KIF 목표를 실행 :모든 KIF 테스트 단계에서 같은 오류가 발생합니다. 무엇을 잘못하고 있습니까?

TestController.m : 제안으로

12:20:58.434 - Test that a user can successfully dismiss the welcome screens 
12:24:53.208 - FAIL (209.11s): Tap screen at point "{10, 10}" 
12:24:53.209 - FAILING ERROR: Error Domain=KIFTest Code=0 "Step threw exception: 
*** -[__NSArrayM insertObject:atIndex:]: 
object cannot be nil" UserInfo=0x842c1e0 {NSLocalizedDescription=Step threw exception: *** -[__NSArrayM insertObject:atIndex:]: 
object cannot be nil} 
12:24:53.210 - END OF SCENARIO (duration 223.62s) 

, 내가 사용하고 코드를 포함 시켰습니다

#import "TestController.h" 
#import "KIFTestScenario+Additions.h" 

@implementation TestController 

- (void)initializeScenarios; 
{ 
    [self addScenario:[KIFTestScenario scenarioToLogIn]]; 
} 
@end 

KIFTestScenario+Additions.m

#import "KIFTestScenario+Additions.h" 

@implementation KIFTestScenario (Additions) 

+ (id)scenarioToLogIn 
{ 
    KIFTestScenario *scenario = [KIFTestScenario scenarioWithDescription:@"Test that a user can successfully dismiss the welcome screens"]; 
    KIFTestStep *step = [KIFTestStep stepToTapScreenAtPoint:CGPointMake(10.0f, 10.0f)]; 
    [scenario addStep:step]; 
    return scenario; 
} 
@end 

나는 디버거를 거쳤으며 시나리오에 추가하는 KIFTestStep이 non-nil이며 유효한 KIFTestStep입니다.

수정하기 전에이 문제를 겪은 사람이 있습니까?

+0

kif 코드를 보여줄 수 있습니까? – abbood

+0

로그의 추가 컨텍스트를 포함 할 수 있습니까? 오류를 일으키는 줄은 무엇 이었습니까? 이 오류는 catch 된 예외에 의해 트리거되었습니다. 예외 중단 점을 추가하고 예외가 발생한 위치를 표시 할 수 있습니까? 그것은 귀하의 코드 또는 KIF에 던져 질 수 있습니다. –

+0

Brian Nickel : 기록 된 오류에 약간의 컨텍스트를 추가했습니다. 예외는 KIFTestStep.m (라인 852)에 던져지고있다. 이 실행 영역을 디버깅하는 동안 모든 것이 정상적인 것처럼 보입니다. – mclaughlinj

답변

1

이 예외는 자체 코드에서 발생했습니다.

KIF 소스를 보면 two places : addStep:KIFTypistinsertObject:atIndex:이 있습니다.

예외가 단계 실행시 발생하므로 addStep:이 아니며 키보드 메서드를 사용하지 않으므로 KIFTypist이 사용되지 않습니다.

KIF가 그 시점에서 화면을 두드리고 제스처 인식기 또는 콜백 수신기가 예외를 트리거하고있을 가능성이 있습니다. 이 경우 앱이 정상적으로 중단되지만 KIF의 예외 처리기가이를 감지하여 테스트 실패를보고합니다. breakpoint exception을 사용하여 발생한 예외를 발견하고 그 원인을 찾을 수 있습니다.

화면 좌표 10, 10은 상태 표시 줄 안에 있기 때문에 일반적으로 적용 할 수 없습니다. 10, 10에서 앱을 탭하려면 10, 30을 전달해야합니다. 키 윈도우 nil 어디


코멘트에 우리의 토론 당

업데이트는 예외가 windowsWithKeyWindow에서 제기되고있다. 일반적인 응용 프로그램에서 keyWindownil 인 유일한 상황은 응용 프로그램 대리인에서 [self.window makeKeyAndVisible]으로 전화하기 전입니다. KIF의 startTestingWithCompletionBlock: 메서드를 호출하기 전에 모든 설정 로직 (키 윈도우 만들기 포함)이 완료되었는지 확인해야합니다.

+0

중단 점 예외 사용 방법을 설명하는 링크를 제공해 주셔서 감사합니다.나는 네가 의미하는 바를 오해했다. 그러나 예외는 UIApplication-KIFAdditions.m의 96 행에 던져지고 코드에서 throw되지 않는 것처럼 보입니다. 나는 아직도이 오류가 발생하는 이유에 관해서는 손해보고있다. – mclaughlinj

+0

문제의 회선을 제공 할 수 있습니까? [해당 파일] (https://github.com/kif-framework/KIF/blob/79db32c4b36bbd8bdd10d9e8f2e028dadf63ef0a/Additions/UIApplication-KIFAdditions.m)에서 89 줄만 볼 수 있습니다. –

+0

흥미로운 점은 파일의 로컬 복사본에 'dimmingViewWindow'는'windowsWithKeyWindow' 바로 위에 있습니다. 예외를 던지는 것으로 보이는 줄은 줄 84,'[windows addObject : keyWindow]; ' – mclaughlinj

관련 문제