2

iOS アプリがあり、その UI をコードから (単体テストを使用して) テストしたいと考えています。ユーザーのアクティビティとストーリーボードのアクティビティを模倣したい: ボタンのタップ、バーボタンのタップ、テキストフィールドへの書き込み、セグエの実行。

シークに問題があります。NavigationController に TableViewConrtoller があります。まず、コードから TableViewController に到達するにはどうすればよいですか?

    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil];
    UINavigationController *nav = [storyboard instantiateInitialViewController];
    GoodHabitsViewController *good = [nav.viewControllers objectAtIndex:0];

    NSLog(@"%@", good.addButton.title);

    [good performSegueWithIdentifier:@"AddGoodHabitSegue" sender:good];

NSLog は正しい値を書き込み、ボタンのタイトルは「追加」で、「追加」はログに表示されます。ただし、 performSequeWithIdentifier の後に次の警告が表示されます。

Warning: Attempt to present <AddGoodHabitViewController: 0x74c8310> on <UINavigationController: 0x764e120> whose view is not in the window hierarchy!

シークを実行する方法、addButton (UIBarButton) をプッシュする方法、AddGoodHabitViewController(セグエ ポイントの場所) を参照する方法。

4

4 に答える 4

2

エラー メッセージが指摘するように、問題は、ビューが階層UIViewController内にない で表示しようとしていることにあります。UIWindow

それを修正する最も簡単な方法:

- (void)testExample {

    //
    // Arrange
    // Storyboard
    //
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];

    //
    // Arrange
    // View Controller
    //
    UIViewController *viewController = [storyboard instantiateViewControllerWithIdentifier:@"ViewController"];
    [UIApplication sharedApplication].keyWindow.rootViewController = viewController;

    //
    // Act
    //
    [viewController performSegueWithIdentifier:@"ModalSegue" sender:nil];

    //
    // Assert
    //
    XCTAssertEqualObjects(viewController.presentedViewController.title, @"Second");

}
于 2013-12-21T22:17:49.730 に答える
0

単体テスト (つまり、Xcode テンプレートを介して単体テストをプロジェクトに追加するときに得られるもの) は、UI をテストするためのものではありません。JavaScript を使用して UI アクションをコーディングできるようにするUI オートメーションを検討する必要があります。

于 2013-04-14T07:40:13.753 に答える
0

KIFをご覧ください。それはあなたが必要とするもののほとんどのように聞こえます:

https://github.com/kif-framework/KIF

これは、(UI オートメーションと同様に) アプリに組み込まれているアクセシビリティ フレームワークと統合する、Objective-C ベースの UI テスト フレームワークです。

または、このチュートリアルに従って、希望どおりであることを確認してください。

http://www.raywenderlich.com/61419/ios-ui-testing-with-kif

あなたの解決策を見つけてください!

于 2014-02-25T16:05:14.350 に答える