Xcode 中的批量 UI 测试
Posted
技术标签:
【中文标题】Xcode 中的批量 UI 测试【英文标题】:Batch UI tests in Xcode 【发布时间】:2018-05-18 08:03:11 【问题描述】:我想批量 UI 测试(现在,我想单元测试会在一段时间内有用)
到目前为止,Xcode UI 测试和“fastlane scan”似乎都没有对此提供任何固有的支持。有没有好的又简单的方法?
情况
我需要测试某个 UI 测试 N 次。
现实世界的情况
我需要对某个 UI 测试进行 100 次测试并在批处理结束时获得输出:
成功/失败的迭代次数 失败迭代的任何日志我已经尝试过(目前正在做的)
在快速文件中,fastlane scan
可以像这样用于批处理。然而,输出文件最终都位于单独的目录中,并且聚合所有这些结果将是相当(?)一些工作。这不像scan
返回一个布尔值或任何表示测试成功状态的东西? (实际上扫描也可能不支持运行某个测试,它会运行所有测试)
100.times do |index|
puts "Running test iteration #index..."
scan(scheme: schemefortesting,
output_directory: "fastlane/tests/test_output_#index",
destination: 'name=Myrealworldiphonename'
)
end
【问题讨论】:
【参考方案1】:据我所知,不支持此功能。我想最好的方法是创建一个方法来执行测试,然后让测试用例多次运行它,跟踪整体结果并记录到控制台。比如:
func runTheTest() -> Bool
app.launch()
// Run your test
let passing = // Make your asserts
return passing
func testManyTimes()
var allTestsPassing = true
for n in 0...100
let thisLoopPassing = runTheTest()
print("Loop \(n) returned \(thisLoopPassing)")
allTestsPassing = allTestsPassing && thisLoopPassing
XCTAssertTrue(allTestsPassing)
部分来自Automatically Running a Test Case Many Times in Xcode 的想法。
【讨论】:
这是我同意的另一种方式,我一开始也尝试过。它可能适用于某些特定的测试。我需要测试每次都需要全新启动的东西,即每次开始一个新的进程。但是,我认为没有办法在一个测试过程中完全关闭该过程并再次启动它(?)。在我的情况下,一遍又一遍地运行设置和清理方法是不够的。 您应该能够使用 app.launch() 和 app.terminate() 来启动和停止应用程序。但我不确定是否要卸载。以上是关于Xcode 中的批量 UI 测试的主要内容,如果未能解决你的问题,请参考以下文章