iPhone 的 XCode 测试自动化
Posted
技术标签:
【中文标题】iPhone 的 XCode 测试自动化【英文标题】:XCode Test Automation For IPhone 【发布时间】:2009-06-15 10:34:55 【问题描述】:我想让我的 iphone 测试应用程序在 iPhone 中自动测试。以下是我想要的步骤:
-
编译、链接和代码签名 iPhone 应用 (Xcodebuild)
将新建的应用上传到iphone
在 iphone 中自动运行上传的应用程序
从 gdb 控制台收集结果
关闭应用
现在,我无法自动执行第 2 步和第 3 步(我可以通过“构建和调试”按钮从 XCode 中执行此操作。但是,这需要手动单击)。
我对 automator 进行了一些研究,但它并没有解决我的问题。我正在考虑的另一个选择是为 iphone 模拟器编译应用程序并从那里运行它,但我不确定测试结果与真实设备相比有多准确。
我是 Mac/iPhone 开发的新手,也许有人有更好的测试方法。欢迎任何反馈和意见。谢谢。
【问题讨论】:
【参考方案1】:评论部分没有提供正确显示解决方案的好方法。这是答案的摘要。
在 iPhone 上构建 iPhone 应用程序、上传和触发调试过程的任务是通过 AppleScript 完成的。 AppleScript 的外观如下:
tell application "Xcode"
open "Users:chuan:Desktop:iphone_manual_client:iphone_manual_client.xcodeproj"
tell project "iphone_manual_client"
clean
build
(* for some reasons, debug will hang even the debug process has completed.
The try block is created to suppress the AppleEvent timeout error
*)
try
debug
end try
end tell
quit
end tell
AppleScript 接受“:”而不是“/”作为文件和文件夹分隔符。
可以通过设置 GDB 选项将其写入文件来捕获 GDB 控制台输出。这是通过在终端中键入以下命令来完成的:
defaults write com.apple.Xcode PBXGDBDebuggerLogToFile YES
defaults write com.apple.Xcode PBXGDBDebuggerLogFileName <path to my gdb output file>
最后,非常感谢帮助解决这个问题的各种人。
【讨论】:
【参考方案2】:您可能想要用于构建和安装的工具是 Applescript。比如:
tell application "Xcode" to launch
我不是假装这是一个完整的答案;还有很多事情需要解决。但我相信 Applescript 将成为您的关键工具之一。
【讨论】:
感谢您的指点。我设法使用 applescript 启动了 XCode。现在,我必须弄清楚单击选择正确项目并单击“构建并开始”的语法是什么。我还需要很长一段时间才能拿出任何有用的东西。 不要将其视为“点击构建并开始”。你需要考虑事件。如果您在脑海中“点击”,您通常会走错路。构建命令是“构建”。你会想花很多时间在 Applescript 编辑器的“打开字典”中看看 Xcode 提供了什么。您将需要诸如“使用名为“Release”的第一个项目的构建配置构建的命令。 'launch' 将运行它。 “设置活动架构”也可能很重要。更难的问题是如何轻松获得控制台输出。 控制台输出可以这样完成:在终端输入以下命令: defaults write com.apple.Xcode PBXGDBDebuggerLogToFile YES defaults write com.apple.Xcode PBXGDBDebuggerLogFileName tell application "Xcode" tell project "iphone_test_client" debug end tell end tell
它还不是成品(需要解决 AppleEvent 超时问题),但它确实做到了工作 :) 。我的下一步是将其集成到 CruiseControl 中。谢谢你的帮助。这对我帮助很大。【参考方案3】:
查看 UISpec http://code.google.com/p/uispec/
这是一个正在为 iphone 开发的全自动测试框架。
【讨论】:
【参考方案4】:查看iphone_testify,它适用于 OCUnit 和 Google Toolbox For Mac,我认为它可以扩展为 UISpec 之类的东西。
问候
【讨论】:
【参考方案5】:您可以调用一个命令行工具“xcodebuild”来启动 XCode 构建,而无需打开它。您可以使用一些标志来设置目标等。
【讨论】:
感谢您的帮助。 xcodebuild 只会构建二进制文件,它不会将新编译的二进制文件上传到 iphone。如果我需要指定一个标志/选项以使其工作,我很想知道它。【参考方案6】:Nic 博士的 testing with Ruby 可能会对此有所帮助
【讨论】:
【参考方案7】:您能否将构建阶段添加到运行脚本以将二进制文件上传到 iphone 的目标中?
右键目标,Add->New Build Phase->New Run Script Build Phase
【讨论】:
【参考方案8】:xcodebuild 只会构建二进制文件,它不会将新编译的二进制文件上传到 iphone。
实际上它可以上传(签名后),但运行不会太糟糕...... 也许它可以在连接到目标后使用 gdb 运行,但是如何(ip?,usb?usbnet?)?
【讨论】:
以上是关于iPhone 的 XCode 测试自动化的主要内容,如果未能解决你的问题,请参考以下文章