1

我用GHUnit. 我想测试,等IBOutlet的属性。isHiddendelegate

我尝试了下面的代码来测试是否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的属性:IBOutlet

GHAssertNotNil(testClass.textField.delegate, @"delegate is nil.");

它失败了Reason : ((testClass.textField.delegate) != nil) should be FALSE.

怎么了?

编辑: 尝试下面的代码不起作用。

[testClass view];

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard"
                                         bundle:[NSBundle bundleForClass:[self class]]];
GHAssertNotNil(storyboard, nil);

// Tests
GHAssertTrue(testClass.myView.isHidden, nil);  // This fails
4

2 回答 2

3

在测试包含在 a 中的视图时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 方法中。

于 2013-08-23T13:14:54.467 回答
0

这是因为界面生成器上的 IBTextField 无法找到已定义的文本字段属性。

那就是您需要从界面构建器附加它或将文本字段连接到它的属性。

(或者可能是因为您testClass无法指出或授予访问权限textField。)

于 2013-08-23T06:35:21.780 回答