如何编程实现单个XCTestCase测试方法重复执行n次
编程实现单个XCTest方法重复运行(支持失败快速终止)
实现说明
- 目前可查的多数XCTest重复运行方案,针对的是整个XCTestCase测试套件批量重复执行的场景,和单测试方法重复运行的需求不匹配
- Xcode IDE提供了可视化的重复运行测试操作入口,但属于手动操作能力,无法通过代码逻辑自动化控制
- 目标效果:指定单个测试方法重复运行10次,任意一次运行失败时立即终止后续执行(即fail fast机制)
具体实现
XCTest原生断言一旦触发失败就会直接终止当前测试流程,天然支持fail fast特性,只需要在目标测试方法内增加循环计数即可实现需求,参考代码如下:
final class MyTests: XCTestCase { var subject: Subject! // 配置测试重复运行次数 private let testRepeatCount = 10 override func setUp() { super.setUp() self.subject = Subject() } func testSujectDoesStuff() async { for currentRound in 0..<testRepeatCount { print("当前执行第\(currentRound + 1)轮测试") // 如果要求每一轮测试都重置测试对象状态,取消下一行注释即可 // subject = Subject() subject.stuff() // 方法内原有断言逻辑保留即可,任意一轮断言失败都会直接终止测试,符合fail fast要求 } } }
如果你的测试逻辑要求每一轮执行都完整走
setUp/tearDown生命周期,可以基于XCTest的测试调用分发逻辑做自定义扩展,上述轻量实现已经可以覆盖绝大多数单方法重复执行的场景,完全不需要依赖IDE手动操作。
内容的提问来源于stack exchange,提问作者Amadeu Cavalcante Filho
相关产品推荐
相关产品推荐

