菜鸟教程小白 发表于 2022-12-13 14:31:27

ios - 在 EarlGrey 中随机选择


                                            <p><p>我正在使用 XCTest 编写相当复杂的 UI 测试,最近改用 EarlGrey,因为它更快且更可靠 - 测试不会在构建服务器上随机失败,并且测试套件可能需要多达一半小时跑! </p>

<p>我在 EarlGrey 中无法做到但我可以在 XCTest 中做到的一件事是随机选择一个元素。 </p>

<p>例如,在日历 <code>collectionView</code> 上,我可以使用 <code>NSPredicate</code> 查询所有带有 'identifier' 的 <code>collectionViewCell</code>,然后随机使用 <code></code> 选择一天以获取索引,然后<code>点击</code>。</p>

<p>现在,我将对其进行硬编码,但我希望随机选择日期,这样如果我们更改应用代码,我就不必重写测试。 </p>

<p>如果我能详细说明,请告诉我,期待解决这个问题! </p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p><strong>第 1 步</strong>编写一个匹配器,它可以使用 <code>GREYElementMatcherBlock</code> 计算元素<strong>匹配</strong>给定匹配器:</p>

<pre><code>- (NSUInteger)elementCountMatchingMatcher:(id&lt;GREYMatcher&gt;)matcher {
__block NSUInteger count = 0;
GREYElementMatcherBlock *countMatcher = [GREYElementMatcherBlock matcherWithMatchesBlock:^BOOL(id element) {
    if () {
      count += 1;
    }
    return NO; // return NO so EarlGrey continues to search.
} descriptionBlock:^(id&lt;GREYDescription&gt; description) {
    // Pass
}];
NSError *unused;
[ assertWithMatcher:grey_notNil() error:&amp;unused];
return count;
}
</code></pre>

<p><strong>第 2 步</strong>使用 <code>%</code> 选择随机索引</p>

<pre><code>NSUInteger randomIndex = arc4random() % count;
</code></pre>

<p><strong>第 3 步</strong> 最后使用 <code>atIndex:</code> 选择该随机元素并对其执行操作/断言。</p>

<pre><code>// Count all UIView&#39;s
NSUInteger count = )];
// Find a random index.
NSUInteger randIndex = arc4random() % count;
// Tap the random UIView
[[)]
    atIndex:randIndex]
    performAction:grey_tap()];
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 在 EarlGrey 中随机选择,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/41863692/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/41863692/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 在 EarlGrey 中随机选择