重新运行失败的单元测试-Xcode XCTest

重新运行失败的单元测试-Xcode XCTest,xcode,xctest,xcode-ui-testing,Xcode,Xctest,Xcode Ui Testing,当我运行XCTests时,我希望自动重新运行一次失败的任何集成(单元/ui)测试。这可能吗 这将在同一个测试中完成,而无需在我的测试或测试的任何部分上再次点击“运行”。我正在从命令行运行所有测试 我正在做UI测试,使用网络调用服务器。如果存在严重的服务器问题,测试将失败并报告错误。但是,如果这只是请求中的一个临时问题,那么最好自动重新运行测试并查看它是否通过。另外,在Xcode UI测试的当前状态下,偶尔会出现一些问题,它会因为一个模糊的原因崩溃,最好自动重新运行测试,看看它是否通过了第二次测试

当我运行XCTests时,我希望自动重新运行一次失败的任何集成(单元/ui)测试。这可能吗

这将在同一个测试中完成,而无需在我的测试或测试的任何部分上再次点击“运行”。我正在从命令行运行所有测试

我正在做UI测试,使用网络调用服务器。如果存在严重的服务器问题,测试将失败并报告错误。但是,如果这只是请求中的一个临时问题,那么最好自动重新运行测试并查看它是否通过。另外,在Xcode UI测试的当前状态下,偶尔会出现一些问题,它会因为一个模糊的原因崩溃,最好自动重新运行测试,看看它是否通过了第二次测试


如果它能够输出所发生的事情,那就特别好了,即“第一次测试失败,因为刷新快照失败,但第二次通过了”

Fastlane可以让它成为可能,这里是关于这一点的精彩博文


无需fastlane和粒度测试重新运行即可完成此任务的任务列表

  • 创建一个脚本以重新运行测试并捕获失败测试的列表,然后使用xcodebuild的-only testing:test-IDENTIFIER标志重新运行测试
  • 解析resultBundle或.xcsult以查找失败的测试
  • 编写代码以擦除执行测试的设备或模拟器
  • 如果设备是真实的,请重新启动设备以清除任何可能的对话框
  • 使用XCAttachment收集您关心的内容,如应用程序日志
  • 使用xchtmlreport从结果包和快照和附件生成一个漂亮的网页

问题在于,您不应该依赖网络呼叫进行测试。您可以使用
NSURLProtocol
子类或使用类似于
OHTTPStubs
的方法来删除这些网络请求,否则您需要编写一个脚本来运行测试,查找错误并尝试重新运行这些测试。如果OP正在编写具有真实用户和数据的集成测试,则无法执行此操作。缺点:依赖fastlane,无法在不重新运行整个套件的情况下重新运行单个失败的测试,示例无法处理真实设备。