使用 Xcode7 的 UI 测试为 App Store 创建应用程序屏幕截图

Using Xcode7's UI tests to create app screenshots for the App Store

每次我们在 UI 中更改某些内容时,我们都必须手动准备并为 iTunes Connect 的列表拍摄 375(= 5 个屏幕截图 * 5 种设备类型 * 15 种语言)屏幕截图。

我正在尝试 "exploit" iOS 9 的新 UI 测试以自动为每种语言准备和获取这些屏幕截图。这应该可以节省大量时间并为我们的用户提供更好的体验,因为由于工作量太大,我们没有经常更新屏幕截图。

我在网上找不到太多帮助,可能是因为这个功能太新鲜了。所以这里有两个基本问题,希望我们能找到实现它的方法。

  1. 是否可以通过 UI 测试将屏幕截图保存到磁盘 API?

  2. 是否可以对 XCTestCase 进行全新安装?

这与 Xcode 7 不完全相关,但您可以使用 snapshot.

自动截取屏幕截图
  1. Is it possible to save a screenshot to disk through the UI testing API?

您可以手动保存它们(通过 "open in preview" 按钮),但我不知道 API 可以在测试期间收集它们。归档雷达! (https://bugreport.apple.com)

  1. Is it possible to have a clean install for a XCTestCase?

我不知道有什么方法可以真正为每个 XCTestCase 重新安装您的应用程序,但您可以 uninstall it before running all of your tests, or you can use the setUp class method or instance methodXCTestCase 上确保您的应用程序处于全新状态在您的测试之前 运行(例如重置用户默认值等)。

是的,您可以使用 Xcode UI 测试创建屏幕截图。

  • 为您的测试创建自定义方案(可选但推荐)。
  • 使用 CLI(终端)运行 测试。像这样:
xcodebuild -workspace App.xcworkspace \
     -scheme "SchemeName" \
           -sdk iphonesimulator \
           -destination 'platform=iOS Simulator,name=iPhone 6,OS=9.0' 
           test

完成此操作后,要生成屏幕截图,请将路径添加到您想要屏幕截图的位置,如下所示:

xcodebuild -workspace App.xcworkspace \
 -scheme "SchemeName" \
       -sdk iphonesimulator \
       -destination 'platform=iOS Simulator,name=iPhone 6,OS=9.0'
       -derivedDataPath './output'
       test

./output 会告诉 Xcode 为每个测试截取屏幕截图。 详细可以找这个here