我对我的一些UI测试的不稳定有问题。我希望能够在多个模拟器中多次运行一个特定的测试。其想法是将此解决方案应用于本地主机,然后应用于CI服务器。
一个完美的解决方案是,如果有任何选项,我可以将PR中的一些测试标记为flaky,然后在xcodebuild test期间运行它们,而不显式地指定它们的名称。
我知道可以选择并行运行测试,但我希望在模拟器的副本上多次运行一次测试,而不是在它们之间分发测试。应该更简单点,我想。
我找到了Can I run an XCTest suite multiple times?主题,描述的主题是如何使用measureBlock运行连续测试,但我不确定如何指定运行次数。我的背景是C#,在那里我只能访问Repeat(x)和case Category,我可以在测试运行期间指定它们。我在找类似的东西。
将测试类别标记为Flaky->应用属性Retry(10) ->使用命令工具运行带有Flaky类别的所有测试
想了解一下如何为我的iOS测试实现这种解决方案。
发布于 2019-06-06 16:01:07
对于重新运行片状UI测试的问题,简单的答案是no,XCTest & xcodebuild不支持这个选项。因此,这在本土上是不可能的。
更长的答案是--是,这是可能的,只是不容易实现。
您需要的:
xcodebuild命令怎么做?
您的测试将在第一个xcodebuild test...中运行(有些测试将在流程中失败)。您将让这些测试完成,然后解析那些失败的测试(使用由您编写的脚本)。您可以从例如StandardOutputAndError.txt文件(how do you find it?)获得这些信息,这就是为什么您需要完全访问您的CI运行程序。
在脚本从结果文件中解析失败测试之后,可以使用该脚本构造新的xcodebuild命令,该脚本只运行分析过的测试,因为它们失败了。新的xcodebuild将使用only-testing:标志(是的,可以在一个xcodebuild中有多个)来指定测试,它应该运行(how to use these flags?)。
在此之后,新构建的xcodebuild命令将返回到CI环境并在那里执行。我正在处理类似的事情(在python脚本中构建xcodebuild,只根据iOS项目中的更改来运行测试,并在CI中执行它),my question应该可以帮助您完成执行和CI环境。
总之:no,没有本地支持,但是yes可以这样做,如果你足够勇敢的话:-)
希望这个有帮助。
E:哦和不-你不能(也不应该)为此使用measureBlock。它们用于性能测试,并且没有重新运行失败测试的功能。
https://stackoverflow.com/questions/56453945
复制相似问题