从Mac OS X控制台启动iOS应用程序

4
为了自动化测试一个应用程序,我想从我的Mac上使用不同的参数重复启动iOS应用程序的主函数;为简单起见,让我们假设它以文件作为argc,并且我有100个需要测试的文件。理论上,我想要重现的只是xcode build & run的行为-在未越狱的设备上;该应用程序与硬件密切相关,因此仅模拟器是不够的。
有几个页面做了类似的事情,但它们都没有使用设备,也没有详细说明控制台上的命令行实际上看起来像什么。
1) http://blog.carbonfive.com/2011/04/06/running-xcode-4-unit-tests-from-the-command-line/ 这个页面设置了一个最终在模拟器中运行的单元测试;他接着说:

一个单元测试构建目标的“Run Script”构建阶段只运行“${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests”

我检查过了,但是在Xcode 4中既没有执行RunPlatformUnitTests也没有执行RunUnitTests(我更改了脚本名称以确保)。
2) http://longweekendmobile.com/2011/04/17/xcode4-running-application-tests-from-the-command-line-in-ios/ 这个页面继承了第一步,但只为模拟器构建,并没有指定应用程序如何实际启动。它描述了如何从命令行构建得很好。
3) Debugging iOS app built from commandline 在Xcode 4中,我看到的是构建阶段,在签名和验证应用程序之后停止。接下来我看到的是在设备上运行的gdb调试器。然而,我不知道如何访问debugserver - 我没有越狱我的iPhone,因此我对其几乎没有任何访问权限,无论是debugserver还是IP地址。
我能确定的是gdb是从xcode4/platforms/iPhoneOS.platform调用的,因此远程调试器必须以某种方式附加到某个东西上...
1个回答

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。

从那里开始,您应该能够使用多个不同的参数自动化测试您的应用程序。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接