使用 Instruments.app 从终端进行 Mac、iOS 自动化测试
Posted
技术标签:
【中文标题】使用 Instruments.app 从终端进行 Mac、iOS 自动化测试【英文标题】:Mac, iOS automation test from Terminal using instruments.app 【发布时间】:2011-11-16 06:50:40 【问题描述】:我正在使用以下命令从命令行运行 ios UIAutomation 测试:
instruments -t /Developer/Platforms/iPhoneOS.platform/Developer/Library/Instruments/PlugIns/AutomationInstrument.bundle/Contents/Resources/Automation.tracetemplate /Users/ctester/Library/Developer/Xcode/DerivedData/TestView-acwgjlejvnjkqietyevgfnsjngpd/Build/Products/Debug-iphonesimulator/TestView.app -e UIASCRIPT ta.js -e UIARESULTSPATH .
TestView.app
在模拟器中成功启动,但脚本无法运行。
我尝试指定一个不存在的脚本,没有报告错误。所以我猜参数-e UIASCRIPT ta.js ...
被忽略了。
我笔记本电脑上的instruments
命令版本是:
instruments, version 1.0
usage: instruments [-t template] [-D document] [-l timeLimit] [-i #] [-w device] [[-p pid] | [application [-e variable value] [argument ...]]]
重要吗?
TestView.app
和 ta.js
在instruments.app(GUI) 中工作得很好。
谢谢。
【问题讨论】:
【参考方案1】:仪器不喜欢路径中的空格。如果您的任何路径中有空格,请转义它们。使用引号不能可靠地工作。虽然仪器可能会启动,但它会在启动过程的后期阻塞空间。
给仪器一个 ta.js 的绝对路径,然后转义它。 示例:
find $PWD -name ta.js -exec echo \; | sed 's/ /\\ /g'
sed 位转义了您找到的 ta.js 的路径。
您可以尝试:
instruments -t /Developer/Platforms/iPhoneOS.platform/Developer/Library/Instruments/PlugIns/AutomationInstrument.bundle/Contents/Resources/Automation.tracetemplate /Users/ctester/Library/Developer/Xcode/DerivedData/TestView-acwgjlejvnjkqietyevgfnsjngpd/Build/Products/Debug-iphonesimulator/TestView.app -e UIASCRIPT ``find $PWD -name ta.js -exec echo \; | sed 's/ /\\ /g'`` -e UIARESULTSPATH .
但是用单反引号替换双反引号。 ` 是 SO 格式中的保留字符 :(
【讨论】:
我总是小心使用空格,绝对路径仍然无济于事。你有没有尝试过?脚本是否在您的情况下运行? 是的,上面是工作生产代码。从命令行以详细模式运行仪器时是否看到任何错误? 而不是那个hack;正确引用您的扩展。 "$(find "$PWD" -name ta.js)" (还有,你为什么在 -exec echo \; 中折腾?)以上是关于使用 Instruments.app 从终端进行 Mac、iOS 自动化测试的主要内容,如果未能解决你的问题,请参考以下文章