シンプルな問題。次のView Controllerにセグを実行するボタンがあります。 UI XCTestを書いて、私が望んでいたオープンビューコントローラーを教えてくれました。UITesting、XCTest現在のViewControllerクラス
10
A
答えて
23
UIテストフレームワークは、インスタンス上のクラスアサーションを不可能にするアプリケーションコードにアクセスできません。 に直接アクセスすることはできません。は、画面上にあるコントローラのクラスに伝えます。
しかし、あなたのテストについて少し違って考えると、非常に似たような主張ができます。 あなたがユーザーであるかのようにテストを書く。あなたはItemDetailViewController
またはItemListTableViewController
を見ているかどうか気にしないので、あなたのテストはどちらにもなりません。
ユーザーは画面上の内容を気にします。タイトルは何ですか?または、これらのボタンの名前は何ですか?そのロジックに続いて、コード化されたクラスの名前ではなく、それらの項目に基づいてアサートするようにテストを書き直します。
たとえば、コントローラをナビゲーションスタックに表示する場合は、タイトルをアサートできます。
let app = XCUIApplication()
app.buttons["View Item"].tap()
XCTAssert(app.navigationBars["Some Item"].exists)
また、画面がモーダルで表示されていても静的なテキストやボタンが分かっている場合は、それらを使用してください。
let app = XCUIApplication()
app.buttons["View Item"].tap()
XCTAssert(app.staticTexts["Item Detail"].exists)
XCTAssert(app.buttons["Remove Item"].exists)
関連する問題
- 1. XCTest(UITesting)でデバイス名を取得
- 2. サブモードの現在のモーダルViewController
- 3. スイフト現在のViewControllerキーボード
- 4. サブビュー内のUIButton、現在のViewControllerのトリガアクション
- 5. Swift Change現在のUITabBarControllerのViewController
- 6. 現在のフォームシートモーダルViewController horizontal flip
- 7. Rubyの現在のクラス
- 8. jQuery現在のクラスのスムーススクロール
- 9. 使用現在のクラス
- 10. 迅速なXctestでのFirebaseクラスのテスト
- 11. TabBarControllerの現在のタブ親ViewControllerを通して
- 12. UI XCTest、ビューに存在する要素
- 13. iOSのUITestingエラー
- 14. Swift:viewControllerを終了してから1現在のviewController 2
- 15. 現在のスタックに新しいviewcontrollerを追加する
- 16. Take現在開いていないViewControllerのスクリーンショット
- 17. iOS:現在のコンテキストでViewControllerをプッシュする方法
- 18. 現在、新しいViewControllerがあります。[Swift 3]
- 19. Xamarin.iOS UITesting - UnauthorizedAccessException
- 20. 現在のクラスのインスタンスメソッドのリスト
- 21. Pythonのタイプヒンティング方法は、現在のクラス
- 22. は、現在の外部クラスのオブジェクト
- 23. 現在のクラスを取得する
- 24. CSS少ない - 現在のクラス
- 25. 複数のXCTestCaseクラスを使用したUITesting
- 26. iphone UITestingボタン番号
- 27. クラスがasp.netの現在のコンテキストに存在しません
- 28. 現在のクラスの固有クラスへのメソッドの結合
- 29. xCode 7.1のアラートのUITesting
- 30. どのViewControllerが現在アクティブかをどのように知るのですか
ありがとう、これは多くの助けになります。私は自分自身で正確なことをしたが、私は何かが欠けていると思っていた。 –
私の場合は、app.buttons ["View Item"]。tap() 'の前に' sleep(1) 'しなければなりません。 – onmyway133
これを行うにはもっと良い方法があるはずです...アプリでテキストを変更するとどうなりますか?アプリケーションに複数のテキストのローカライズがあるとどうなりますか?ローカライズされていればかなりのテストが必要になり、テキストを変更する必要がある場合はメンテナンスの可能性があります。 –