Ios 单元测试';s属性
我使用Ios 单元测试';s属性,ios,objective-c,unit-testing,ios6,gh-unit,Ios,Objective C,Unit Testing,Ios6,Gh Unit,我使用GHUnit。我想测试IBOutlet的属性,如ishiden,委托等 我尝试了以下代码来测试myView是否隐藏: - (void)testViewDidLoad { // Call view on viewcontroller which will load the view if not loaded [testClass view]; // Tests testClass.myView.hidden = YES; if (testClas
GHUnit
。我想测试IBOutlet
的属性,如ishiden
,委托
等
我尝试了以下代码来测试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");
}
}
这总是记录未隐藏
,而就在记录之前,我将其设置为隐藏=是
为什么会这样
要测试IBOutlet
的delegate
属性,我在下面的行中尝试了:
GHAssertNotNil(testClass.textField.delegate, @"delegate is nil.");
它失败的原因是:((testClass.textField.delegate)!=nil)应该为FALSE。
怎么了
编辑:
尝试了以下不起作用的代码
[testClass view];
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard"
bundle:[NSBundle bundleForClass:[self class]]];
GHAssertNotNil(storyboard, nil);
// Tests
GHAssertTrue(testClass.myView.isHidden, nil); // This fails
这是因为interface builder上的IBTextField无法找到已定义的textfield属性 也就是说,您需要从interface builder将其附加或将textfield连接到其属性
(或者可能是因为您的
testClass
无法指向或访问textField
)在测试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);
我还建议(用一个单独的方法)测试视图控制器是否成功实例化。如果有必要,我也会将控制器初始化移到您的设置方法中。您是否有一个测试来验证
testClass.myView
是否为零?@FlorianMielke您是对的<代码>我的视图为零。但是当我调用[testClass view]代码>,是否应该初始化它?或者有没有初始化的方法?主要的一点是它是IBOutlet
,因此它是弱的
属性。您是使用XIB还是脚本作为接口?@FlorianMielke脚本。尝试过了。不起作用。我已经发布了我尝试过的代码。