运行我的 KIF 目标时,无论我如何编写 KIFTestScenario 或 KIFTestStep,它们都会返回以下错误:
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)
按照建议,我已经包含了我正在使用的代码:
TestController.m
#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 是非零并且是有效的 KIFTestStep。
有人以前遇到过这个问题或者有解决办法吗?
您自己的代码中会引发此异常。
查看 KIF 源码,insertObject:atIndex:
被叫进: in addStep:
and in KIFTypist
.
您的异常是在执行该步骤时发生的,因此它不在addStep:
,并且您没有使用键盘方法,所以KIFTypist
没有被使用。
可能发生的情况是 KIF 此时正在点击屏幕,并且您的手势识别器或回调侦听器正在触发异常。这通常会使您的应用程序崩溃,但 KIF 的异常处理程序捕获它并报告测试失败。您可以使用以下方法捕获引发的异常断点异常 https://developer.apple.com/library/ios/recipes/xcode_help-breakpoint_navigator/articles/adding_an_exception_breakpoint.html并找出原因。
值得注意的是屏幕坐标10, 10
通常无法点击,因为它位于状态栏内。点击您的应用程序10, 10
你应该通过10, 30
.
Update
根据我们在评论中的讨论,例外情况是在windowsWithKeyWindow
钥匙窗口在哪里nil
。唯一的情况是keyWindow
将会nil
在典型的应用程序中是在你打电话之前[self.window makeKeyAndVisible]
在您的应用程序委托中。您需要确保在调用 KIF 之前完成所有设置逻辑(包括创建关键窗口)startTestingWithCompletionBlock:
method.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)