首页 > 解决方案 > Xcode 中的批量 UI 测试

问题描述

我想批量 UI 测试(现在,我想单元测试会在一段时间内有用)

到目前为止,Xcode UI 测试和“fastlane scan”似乎都没有对此提供任何固有的支持。有没有好的简单的方法?

情况

我需要测试某个 UI 测试 N 次。

现实世界的情况

我需要测试某个 UI 测试 100 次并在批处理结束时获得输出:

我尝试过的(现在正在做的)

在 fastfile 中,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

标签: xcodexcode-ui-testingfastlanefastlane-scan

解决方案


据我所知,不支持这一点。我想最好的方法是创建一个方法来执行测试,然后让测试用例多次运行它,跟踪整体结果并记录到控制台。就像是:

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


推荐阅读