从Mac OS X控制台启动iOS App

时间:2011-12-20 09:19:57

标签: ios xcode4 console automated-tests

为了自动测试应用程序,我想重复启动一个iOS应用程序,它的主要功能来自我的mac的不同参数;为简单起见,我们只是说它需要一个文件作为argc,我有100个文件需要测试。从理论上讲,我想要重现的是xcode build& amp;在设备上运行,而不是越狱;该应用程序与硬件密切相关,因此仅靠模拟器是不够的。

有几个页面做了类似的事情,但没有一个使用该设备,并且它们都没有实际说明控制台上的命令行实际上是什么样子。

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调试器。但是,我不知道如何访问debugserver - 我没有jailbrake我的iPhone所以我无法访问任何内容,无论是调试服务器还是IP地址。

我可以验证的是,gdb是从xcode4 / platforms / iPhoneOS.platform调用的,所以远程调试器必须将自己附加到某个东西上,不知怎的......

1 个答案:

答案 0 :(得分:2)

对于命令行远程GDB(或只是上传到设备),您可以使用这个小工具,选择最接近您需要的分叉,原作者将不再支持它: 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。

从那里你应该可以使用几个不同的应用参数自动化测试。