我使用GHUnit
。我想测试IBOutlet
的属性,例如isHidden
,delegate
等。
我尝试使用以下代码来测试myView
是否隐藏:
- (void)testViewDidLoad
{
// Call view on viewcontroller which will load the view if not loaded
[testClass view];
// Tests
testClass.myView.hidden = YES;
if (testClass.myView.isHidden) {
GHTestLog(@"Hidden");
}
else {
GHTestLog(@"Not Hidden");
}
}
这始终记录Not Hidden
,而在记录之前我将其设置为hidden = YES
。
为什么会这样?
要测试delegate
的{{1}}属性,我尝试了以下行:
IBOutlet
它以GHAssertNotNil(testClass.textField.delegate, @"delegate is nil.");
有什么问题?
编辑: 尝试下面不起作用的代码。
Reason : ((testClass.textField.delegate) != nil) should be FALSE.
答案 0 :(得分:3)
在测试UIStoryboard
中包含的观看次数时,请确保已将故事板文件添加到测试目标。
我还建议您进行一项测试,验证您的故事板是否已成功初始化,如下所示:
- (void)testStoryboardShouldBeInitialized
{
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"NameOfStoryboard" bundle:[NSBundle bundleForClass:[self class]]];
STAssertNotNil(storyboard, nil);
}
修改强>
您首先必须实例化您想要从故事板中测试的视图控制器,然后您可以测试您的插座:
UIViewController *controller = [storyboard instantiateViewControllerWithIdentifier:@"ViewControllerIdentifier"];
[controller view];
GHAssertTrue(controller.myView.isHidden, nil);
我还建议测试(在单独的方法中)您的视图控制器已成功实例化。我还将控制器初始化移动到setUp方法中 - 如果需要的话。
答案 1 :(得分:0)
这是因为界面构建器上的IBTextField无法找到已定义的文本字段属性。
那就是你需要附加它或者从界面构建器将textfield连接到它的属性。
(或者可能是因为您的testClass
无法指向或授予textField
的访问权限。)