使用paraller运行和xcodebuild验证片状UI测试



我对某些UI测试的不稳定有问题。我希望能够在多个模拟器中多次运行一个特定的测试。这个想法是将此解决方案应用于本地主机,然后应用于 CI 服务器。

一个完美的解决方案是,如果有任何选项,我可以将 PR 中的某些测试标记为flaky然后在xcodebuild test运行它们而不明确指定它们的名称。

我知道有一个选项可以并行运行测试,但我想在模拟器的副本上多次运行一个测试,而不是在它们之间分发测试。我想它应该更简单。

我发现我可以多次运行 XCTest 套件吗? 描述的主题是如何使用measureBlock运行连续测试,但我不确定如何指定运行次数。 我的背景是 C#,我只能访问Repeat(x)和案例Category,我可以在测试运行期间指定。我正在寻找类似的东西。

将测试类别标记为Flaky->应用属性Retry(10)->使用命令工具运行具有Flaky类别的所有测试

寻找一些想法,我可以做些什么来为我的iOS测试实现这种解决方案。

对于重新运行片状UI测试的问题,简短的回答是否定的,XCTest和xcodebuild不支持此选项。所以这在原生上是不可能的。

更长的答案是 -是的,这是可能的,只是不容易实现。

您将需要:

  1. CI 环境,它将使用全套测试运行xcodebuild命令
  2. Python脚本,用于从测试结果(或其他此类语言)中获取失败的测试
  3. 对 CI 运行程序的管理访问权限(或至少 R/W 访问权限)

怎么办?

您的测试将在第一个xcodebuild test...运行(有些测试将在此过程中失败)。您将让这些完成,并且您将解析(使用由您编写的脚本)那些失败的测试。您可以从例如StandardOutputAndError.txt文件(如何找到它?),这就是为什么您需要完全访问 CI 运行器的原因。

脚本从结果文件中分析失败的测试后,可以使用该脚本构造新的xcodebuild命令,该命令将仅运行因失败而分析的测试。新xcodebuild将使用only-testing:标志(是的,您可以在一个xcodebuild中有多个)来指定测试,它应该运行(如何使用这些标志?

在此之后,您构建的新xcodebuild命令将返回到 CI 环境并在那里执行。我正在处理类似的事情(在 python 脚本中构造xcodebuild以仅根据 iOS 项目中的更改运行测试并在 CI 中执行它),我的问题应该可以帮助您处理执行和 CI 环境。

总而言之:,没有本地支持,但是是的,如果你足够勇敢,它可以做到:-)

希望,这有所帮助。

E:哦,不 - 你不能(也不应该)为此使用measureBlock。这些用于性能测试,没有重新运行失败测试等功能。

最新更新