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

に含まれるビューをテストするときは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);

また、View Controller が正常にインスタンス化されていることを (別の方法で) テストすることをお勧めします。また、必要に応じて、コントローラーの初期化を setUp メソッドに移動します。

于 2013-08-23T13:14:54.467 に答える