2016-08-24 3 views
0

私はXCTestフレームワークでUIテストを実行しています。XCode UIテストは何度も試行してから成功する前に要素を見つける

すべてが成功し、それが探しているUIElementを見つけるために、多くの多くの回を試してみていXCTest私のテストのいくつかのことを除いて正常に動作しています。これは、特に、テーブルビューセル内のボタンから生成されたメニューに含まれるメニュー項目で発生します。

これは、この動作を持つ私のテストのコードです。

func testMoreMenuCopyDirectLinkAction() 
{ 
    //Arrange 
    CloudPasteboardController.clearClipboard() 
    XCTAssertTrue(CloudPasteboardController.getPasteboardItems().count == 0) 
    let app = XCUIApplication() 
    let firstCell = app.tables.cells.elementBoundByIndex(0) 
    let moreMenu = firstCell.menus.elementBoundByIndex(0) 
    let copyDirectLink = moreMenu.menuItems.elementMatchingType(.MenuItem, identifier: "Copy Direct Link") 

    //Act 
    openApp() 
    findAndClickCellButtonWithName("More Button") 
    waitForUIElementToAppear(copyDirectLink) 
    copyDirectLink.click() 

    //Assert 
    XCTAssertTrue(CloudPasteboardController.getPasteboardItems().count == 1) 
} 

ここでは、部分出力のスクリーンショットを示します。見て分かるように、要素を一種のループで見つけるために複数回試みます。このテストでは、すべて11番目のループで成功しました。

Screenshot of test output

私はコールに「waitForUIElementToAppear(...)」なしに再書き込みのコードを試してみた、と私は「[copyDirectLink = app.menuItems」だけ言って電話を簡素化しようとしました直接リンクをコピー "]"ただし、何も変更されません。ご質問が何であるかを確認してください

+0

私はそれがループしているように見えます。たぶん、それが現われるのを待っているのかもしれません。 – Alex

答えて

0

ない...

はあなたがいないテストが表示される項目を待ちたいですか?それは毎回テストに失敗することになるでしょう。

あなたのテストはあなたが望むより長くかかりますか?もしそうなら、Xcodeサーバーをセットアップして、テストをバックグラウンドで実行させたり、スナックなどをつかむときに実行してください。 (Xcodeサーバーは、半時間と1時間でセットアップできるものではありません。特に、UIテストが適切に機能するためには、時間がかかります)

なぜそれほど時間がかかるのでしょうか? UIテストは常に遅く実行され、UIテスト中にアプリのパフォーマンスを測定することはありません。あなたは非常に失望します。私は、メイン画面のボタンをタップし、約画面が表示されていることを確認し、完了ボタンをタップし、画面が消えることを確認する1つのUIテストを持っています。私がアイコンをタップしてから約7秒でそのテストを行うことができる人として、UIテストには18秒かかります。

+0

コメントの明確化を求めてから明確な答えを投稿する方が良い –

関連する問題