【问题标题】:launching iOS App from Mac OS X console从 Mac OS X 控制台启动 iOS 应用程序
【发布时间】:2012-01-24 06:43:37
【问题描述】:

为了自动化测试应用程序,我想从我的 Mac 上重复启动一个带有不同参数的 iOS 应用程序。为简单起见,我们假设它需要一个文件作为 argc,我有 100 个需要测试的文件。理论上,我只想重现 xcode 构建和运行的行为 - 在设备上,而不是越狱;该应用程序与硬件密切相关,因此仅靠模拟器是不够的。

有几个页面做了类似的事情,但没有一个使用该设备,也没有一个真正说明控制台上命令行的实际外观。

1)http://blog.carbonfive.com/2011/04/06/running-xcode-4-unit-tests-from-the-command-line/

此页面设置最终在模拟器中运行的单元测试;他接着说

单元测试构建目标的“运行脚本”构建阶段只是运行 >“${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests”

我检查了,但 RunPlatformUnitTests 和 RunUnitTests 都不是从 Xcode 4 执行的(我重命名了脚本以确保)。

2) http://longweekendmobile.com/2011/04/17/xcode4-running-application-tests-from-the-command-line-in-ios/

此页面从 1) 离开的位置开始,但仅针对模拟器构建,并未指定应用程序的实际启动方式。它很好地描述了它是如何从命令行构建的。

3)Debugging iOS app built from commandline

我在 Xcode 4 中看到的是构建阶段,它在签名和验证应用程序时停止。接下来我看到的是在设备上运行的 gdb 调试器。但是,我不知道如何访问调试服务器 - 我没有越狱我的 iPhone,所以我无法访问它上面的任何东西,既没有调试服务器也没有 IP 地址。

我可以验证的是,gdb 是从 xcode4/platforms/iPhoneOS.platform 调用的,因此远程调试器必须以某种方式将自身附加到某些东西...

【问题讨论】:

    标签: ios xcode4 console automated-tests


    【解决方案1】:

    对于命令行远程GDB(或者只是上传到设备)你可以使用这个小工具,选择最接近你需要的fork,原作者将不再支持它: https://github.com/ghughes/fruitstrap

    您可能无法按原样使用它(我不得不调整 gdb 参数以供使用),但这是一个好的开始。

    您可以通过自动运行此脚本来进一步自动化操作

    for i in $(system_profiler SPUSBDataType | grep "Serial Number: " | grep -Po "[A-Za-z0-9]{40,}$") ; do
        echo "Installing on: $i"
        #use fruitstrap with device $i
    end
    

    这将简单地检查所有 USB 端口并仅保留当前连接到 iOS 设备的端口并返回其 UDID。

    从那里你应该能够为你的应用使用几个不同的参数来自动化测试。

    【讨论】:

      猜你喜欢
      • 2011-04-11
      • 2011-06-05
      • 2012-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-26
      • 1970-01-01
      相关资源
      最近更新 更多