zoukankan      html  css  js  c++  java
  • 使用命令行工具运行Xcode 7 UI Tests

    原文:Run Xcode 7 UI Tests from the command line
    苹果在Xcode 7中引入了一项新技术UI Tests,允许开发者使用Swift或Objective C代码来进行UI测试。直到现在一个可行的方法是使用UI Automation。通过UI Tests,可使用Xcode适当调试问题以及使用Swift或Objective C而无需处理JavaScript代码。
    首先为UI Tests创建一个新的target

    03.png

    在测试分区下,选中Cocoa Touch UI Testing Bundle:

    04.png

    现在打开Project UI Tests文件夹中最新创建的Project_UI_Tests.swift文件。在底部你会有一个名为testExample的空方法。注意看图中的光标,并点击底部红色的记录按钮。

    05.png

    这样就会打开你的app。现在你可以四处点击下,并与你的应用程序进行交互。完成后,再次点击红色录制按钮。

    06.png

    生成的代码类似下边的记录。我已经在生成的代码行之间添加了几个示例XCTAsserts。在Xcode中使用CMD + U即可运行你的应用程序,并且是同时运行单元测试和UI Tests。
    现在你已经可以使用CLI运行测试了,无需进一步的调整,不过我们想让UI Tests在一个单独的scheme中,点击scheme并选中New Scheme:

    下载.png

    选中最新创建的UI Test target并确认。

    下载 (1).png

    如果你计划在CI-server上运行测试,请确保最新创建的scheme已经启用了Shared选项。点击scheme并选择Manage Schemes来打开会话。

    从CLI打开测

    1
    2
    3
    4
    5
    xcodebuild -workspace App.xcworkspace 
       -scheme "SchemeName" 
               -sdk iphonesimulator 
               -destination 'platform=iOS Simulator,name=iPhone 6,OS=9.0'
               test

    明确所用Xcode的版本非常重要,我们使用的是最新的测试版本:

    1
    export DEVELOPER_DIR="/Applications/Xcode-beta.app"

    你甚至可以将测试版作为你新的默认运行版本:

    1
    sudo xcode-select --switch "/Applications/Xcode-beta.app"

    UI测试运行时终端输出示例:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    Test Suite 'All tests' started at 2015-06-18 14:48:42.601
    Test Suite 'TempCam UI Tests.xctest' started at 2015-06-18 14:48:42.602
    Test Suite 'TempCam_UI_Tests' started at 2015-06-18 14:48:42.602
    Test Case '-[TempCam_UI_Tests.TempCam_UI_Tests testExample]' started.
    2015-06-18 14:48:43.676 XCTRunner[39404:602329] Continuing to run tests in the background with task ID 1
        t =     1.99s     Wait for app to idle
        t =     2.63s     Find the "toggleButton" Switch
        t =     2.65s     Tap the "toggleButton" Switch
        t =     2.65s         Wait for app to idle
        t =     2.66s         Find the "toggleButton" Switch
        t =     2.66s         Dispatch the event
        t =     2.90s         Wait for app to idle
        t =     3.10s     Find the "toggleButton" Switch
        t =     3.10s     Tap the "toggleButton" Switch
        t =     3.10s         Wait for app to idle
        t =     3.11s         Find the "toggleButton" Switch
        t =     3.11s         Dispatch the event
        t =     3.34s         Wait for app to idle
        t =     3.54s     Find the "toggleButton" Switch
        t =     3.54s     Tap the "MyButton" Button
        t =     3.54s         Wait for app to idle
        t =     3.54s         Find the "MyButton" Button
        t =     3.55s         Dispatch the event
        t =     3.77s         Wait for app to idle
        t =     4.25s     Tap the "Okay" Button
        t =     4.25s         Wait for app to idle
        t =     4.26s         Find the "Okay" Button
        t =     4.28s         Dispatch the event
        t =     4.51s         Wait for app to idle
        t =     4.51s     Find the "toggleButton" Switch
    Test Case '-[TempCam_UI_Tests.TempCam_UI_Tests testExample]' passed (4.526 seconds).
    Test Suite 'TempCam_UI_Tests' passed at 2015-06-18 14:48:47.129.
     Executed 1 test, with 0 failures (0 unexpected) in 4.526 (4.527) seconds
    Test Suite 'TempCam UI Tests.xctest' passed at 2015-06-18 14:48:47.129.
     Executed 1 test, with 0 failures (0 unexpected) in 4.526 (4.528) seconds
    Test Suite 'All tests' passed at 2015-06-18 14:48:47.130.
     Executed 1 test, with 0 failures (0 unexpected) in 4.526 (4.529) seconds
    ** TEST SUCCEEDED **

    生成截图

    无需额外的工作,可轻轻松得到截图。可为命令添加derivedDataPath选项,你可以告诉Xcode在什么地方储存测试结果,包括生成的截图。

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

    Xcode会自动为每个测试操作生成截图,关于生成数据的更多信息,可查看Michele写的Test Logs in Xcode.

    下载 (2).png

    下一步

    想要为多种语言和多种设备类型创建截图,你可能会需要像snapshot这样的工具,snapshot使用UI Automation, 不过现在已经弃用了。我目前用的是最新版的snapshot,可充分利用新UI Tests的功能,这样如果程序出错,那snapshot能展示更多细节结果和错误信息。

    转自:http://www.cocoachina.com/ios/20150701/12319.html

  • 相关阅读:
    【解决方案】如何通过RTSP协议安防视频直播平台EasyNVR打造智慧校园监控联网解决方案?
    【开发记录】网络摄像头RTSP协议视频流媒体平台EasyNVR服务演示模式的直播限时设定
    关于RTSP/GB28181协议视频平台EasyNVR/EasyGBS调取指定时间录像播放或下载接口时间说明
    【操作说明】新版网络摄像头RTSP协议视频平台EasyNVR中的直播秒开设置及应用说明
    RTSP协议外网视频直播监控方案EasyNVR+EasyNVS无法播放WS-FLV视频流如何解决?
    通过Java程序调用RTSP拉流协议视频平台EasyNVR程序接口步骤概览
    络摄像头RTSP协议安防视频可视化平台网页无插件直播平台EasyNVR录像如何存储不同磁盘上——windows版
    网络摄像头RTSP协议视频安防可视化平台EasyNVR录像如何存储不同磁盘上——Linux版
    【解决方案】基于RTSP协议实时视频播放平台EasyNVR为基础的应急平台中EasyNVS管理系统有什么作用?
    网络摄像头RTSP协议视频平台EasyNVR临时授权时间不显示在EasyNVS云管理平台上的原因排查?
  • 原文地址:https://www.cnblogs.com/mumoozhu/p/4615631.html
Copyright © 2011-2022 走看看