2016-07-18 46 views
2

我正在研究一個基本的iOS教程應用程序,並認爲我也可以開始學習一些EarlGrey。我自動化的測試有這個流程 -EarlGrey凍結了一段時間,當我在一大組TableViewCells上搜索

  • 我有一個很大的UITableView,我預先填充一些隨機生成的單詞。這些可能會很長,我可能在我的TableView中有超過100個單元格。

  • 在我的測試中,我隨機選擇一個生成的單詞並在單元格內搜索它。每個單元有以下界面:

    |           | 
        | |Word| |Word-Count| | UIImage | | 
        |           | 
    
EarlGrey

所以 -

- (void)setup { 
    [super setup]; 
    GeneratorClass dataSource = 
     [[GeneratorClass alloc] initWithRandomData]; 
    self.tableView.dataSource = dataSource; 
    _randomSelectedValue = dataSource.randomValue; 
} 
- (void)testTableElementVisible { 
    id<GREYMatcher> *cellMatcher = grey_allOf(grey_minimumVisiblePercent(0.0f), 
            grey_interactable(), 
            grey_isKindOfClass([UITableViewCell class]), 
            grey_text(_randomSelectedValue), nil); 
    [[EarlGrey selectElementWithMatcher:cellMatcher] 
     asserWithMatcher:grey_sufficientlyVisible()]; 
    [[EarlGrey selectElementWithMatcher:cellMatcher]  
     performAction:grey_tap()]; 
} 

然而,詹金斯,這個測試需要相當長的運行和失敗,"Timeout (currently set to 30) occurred when looking for elements."屏幕被凍結,雖然在本地我可以看到水龍頭髮生,我沒有能夠通過它。有沒有什麼方法可以加速這個測試,或者我在這裏做了什麼錯誤導致EarlGrey凍結?

+0

正在下載圖像嗎?數據填充時是否有任何網絡活動或動畫?數據源是預先加載所有數據還是按需要進行? – khandpur

+0

我之前做過網絡請求,因爲它的工具比完成交互持續時間要長。但現在已被刪除。數據全部預先加載到數組中,並且沒有任何動畫發生。 –

回答

1

難怪它需要這麼長時間。您有grey_minimumVisiblePercent作爲grey_allOf中的第一個匹配器。所做的就是通過這些匹配器按照指定的順序運行ui層次結構中的每個元素,並且僅當其中一個匹配器失敗或全部匹配(即匹配)時停止。您應該始終對最少選擇性的匹配者做出最多選擇,以避免此問題。使用該邏輯,grey_text(_randomSelectedValue)似乎是最有選擇性的,所以使用它作爲第一個匹配器,然後按照選擇性遞減的順序使用其他邏輯。

相關問題