外卖小哥搞iOS自动化 我在美团写Java的四年里踩的坑

YAML别缩进
2026-08-10 17:26
阅读 274

XCTest没那么可怕

iOS自动化可借鉴后端分层思想。单元测试直接测核心逻辑,执行飞快:

func testOrderPriceCalculation() {
    let viewModel = OrderViewModel()
    viewModel.foodPrice = 25.0
    viewModel.deliveryFee = 5.0
    viewModel.couponDiscount = 10.0
    let total = viewModel.calculateTotal()
    XCTAssertEqual(total, 20.0, "满减后价格计算错误")
}

异步等待差点把我送走

UI测试中绝不能用sleep,必须用XCTestExpectation

let expectation = XCTestExpectation(description: "等待首页加载")
let restaurantList = app.tables["restaurantList"]
let exists = NSPredicate(format: "exists == true")
let expectationForList = expectation(
    for: exists, 
    evaluatedWith: restaurantList, 
    handler: nil
)
wait(for: [expectationForList], timeout: 15.0)

把后端那套搬过来

借鉴测试金字塔,规划三层:

  • 底层:XCTest测ViewModel/Model,秒级执行
  • 中层:测网络与数据库,配合mock
  • 顶层:关键UI流程(下单、支付)

手动回归从一天缩至半小时。

跟后端打通才叫真自动化

XCTest可与后端JUnit测试联动,通过CI/CD触发全链路验证。分层策略与异步处理已能保证发版不再熬夜。

评论 0

最热最新
暂无评论
YAML别缩进Lv.1
0
影响力
0
文章
0
粉丝