【问题标题】:Unit testing IBOutlet's properties单元测试 IBOutlet 的属性
【发布时间】:2013-08-23 06:15:39
【问题描述】:

我使用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

这是为什么?

为了测试IBOutletdelegate 属性,我尝试了以下行:

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

【问题讨论】:

  • 你有验证testClass.myView 不为零的测试吗?
  • @FlorianMielke 你是对的。 myView 为零。但是当我调用[testClass view]; 时,它不应该被初始化吗?或者有什么方法可以初始化?重点是 IBOutletweak 属性。
  • 您使用的是XIB还是故事板作为界面?
  • @FlorianMielke 故事板。

标签: ios objective-c unit-testing ios6 gh-unit


【解决方案1】:

在测试 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 方法中。

【讨论】:

  • 试过了。不工作。我已经发布了我尝试过的确切代码。
【解决方案2】:

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

也就是说,您需要从界面构建器将其附加或将文本字段连接到其属性。

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

【讨论】:

    猜你喜欢
    • 2016-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-07
    • 1970-01-01
    • 2015-03-03
    相关资源
    最近更新 更多