8

iOSアプリケーションを持っていますが、継続的インテグレーションを行いたいと思っています。そのために使用している戦略は、コマンドラインからテストを実行しようとすることです。

次のスクリプトを使用してそれを実行しようとしています。

TRACETEMPLATE="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Instruments/PlugIns/AutomationInstrument.bundle/Contents/Resources/Automation.tracetemplate"
instruments   -t $TRACETEMPLATE build/Release-iphonesimulator/MyApp.app -e UIACSCRIPT "UnitTests/SomeTest.js"

SomeTest.jsは、Xcode内のInstrumentationで実行できる単純なjavascriptファイルであり、機能します。私は以下を使用してアプリケーションを構築します:

xcodebuild -alltargets -sdk iphonesimulator5.1

これにより、MyApp.appが生成されます。シミュレーターでXcodeからアプリケーションを正常に実行できますが、機器で実行しようとすると、不明なエラーがあることを示すボックスが表示され、コマンドラインに次のように出力されます。

2012-05-15 15:32:59.928 instruments[17548:1d03] Recording cancelled : At least one target failed to launch; aborting run
Instruments Trace Error : Failed to start trace.

誰かが私に何が起こっているのかについての助け/提案を教えてもらえますか、そしてどうすればこれを修正できますか?

また、常にiPadシミュレーターを開きますか?必要なシミュレーターを開くようにすることはできますか?

4

6 に答える 6

6

Xcode 4.5.2の時点で、Automation.tracetemplateの正しい場所は次のとおりです。/Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.bundle/Contents/Resources/Automation.tracetemplate

于 2012-11-05T16:43:28.877 に答える
6

私はこれと同じエラーが発生していて、それを解決しようとして髪を引っ張りそうになりました。エラーメッセージはまったく役に立ちません。

私にとって問題になったのは、私が指していた .app ファイルでした。5.1 Simulator フォルダーに深く埋もれていた「適切な」.app ファイルを見つけたら、Xcode 4.3 を使用して、コマンド ラインから UIAutomation テストを実行することができました。

私のために働いた.appへのパス:

~/Library/Application\ Support/iPhone\ Simulator/5.1/Applications/{string-of-numbers-and-letters}/MyApp.app/

以下は、Xcode 4.3 を使用してコマンド ラインから UIAutomation テストを実行するために使用している完全なコマンドです。

instruments -t /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Instruments/PlugIns/AutomationInstrument.bundle/Contents/Resources/Automation.tracetemplate ~/Library/Application\ Support/iPhone\ Simulator/5.1/Applications/{string-of-numbers-and-letters}/MyApp.app/ -e UIASCRIPT /Path/To/TestFile.js

これに関するドキュメントが非常に不足しているため、これが他の誰かに役立つことを願っています。

アップデート

Xcode 4.5.2 の時点で、自動化テンプレートの場所が元の回答のも​​のから変更されていることに注意してください。

/Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.bundle/Contents/Resources/Automation.tracetemplate
于 2012-06-05T22:03:14.217 に答える
1

UIAutomation のコマンド ライン呼び出しのパスは、過去数年間でわずかに変更されました。Xcode 4.4.1 で動作する方法で UIAutomation テスト ファイルを起動できる、連携して動作するいくつかの bash シェル スクリプトを作成しました。

この要点を参照してください: https://gist.github.com/3605692#comments

一言で言えば、主要なコマンドは次のようになります。

instruments -t $INSTRUMENTS_TEMPLATE $APP_PATH -e UIASCRIPT $SCRIPT_PATH -e UIARESULTSPATH $RESULTS_PATH

私のスクリプトは、必要な変数置換を示しています。もう 1 つの利点は、iOS シミュレーター アプリのパスの一部として GUID が頻繁に変更されることです。私のスクリプトはそれらを見つけるので、ビルド/スクリプト/コマンドライン呼び出しで一時的な GUID をハードコーディングする必要はありません。

于 2012-09-02T23:56:28.510 に答える
0

psコマンドを実行して、実行中のプロセスを確認しました。計測器がまだ動いていることがわかりました。それから私はそうしましたkillall instruments、そしてそれは楽器のプロセスを殺しました。次に、instruments コマンドを実行したところ、その後は完璧に機能しました。

于 2013-06-13T17:25:17.933 に答える
0

ビルド構成は、リリースよりもデバッグである必要があります。それが私の場合のエラーの理由でした。ビルド構成は、[スキームの編集] で、[プロファイル] タブを選択して変更できます。ビルド タブもデバッグ モードになっていることを確認します。

于 2012-12-10T07:36:05.373 に答える
0

すみません、私の英語はとても下手です。このスクリプトを Teamtsity から実行する最も簡単な方法は? 各アセンブリ - 数字と文字は異なります。最も簡単な方法ではありません:

  1. 組み立てる前にシミュレーターをきれいにする
  2. プログラムのあるフォルダーを見つけると、変数に書き込まれたこれらの数字と文字が含まれています。
  3. この変数は、スクリプトの記述などに使用されます。

たぶん、これらの数字から簡単に取る方法はありますか?

于 2012-08-14T15:03:59.300 に答える