4

だから私はUIAutomationコマンドラインで実行しています

$ instruments -t /Developer/Platforms/iPhoneOS.platform/Developer/Library/Instruments/PlugIns/AutomationInstrument.bundle/Contents/Resources/Automation.tracetemplate 
<path-to-your-app>/<appname>.app/ -e UIASCRIPT <path-to-your-js-test-file> -e 
UIARESULTSPATH <path-to-results-folder>

これは正常に機能し、シミュレーターが開き、アプリが実行されますが、このエラーが発生します。

Failed to authorize rights (0x2) with status: -60007

私はそれが許可と関係があると信じています。

どうすればいいですか?

4

2 に答える 2

7

それは私がコマンドラインを介してInstrumentsに投稿した答えです-jenkins

そしてここにXcodeコマンドライン認証プロンプトエラーについてのブログ投稿さえあります

ここでもう一度説明します。

私がしたことは次のとおりです。

  • jenkinsユーザーを管理者としてマークします(残念ながら、他に方法はないようです)
  • / etc/authorizationに移動します
  • キーsystem.privilige.taskportを検索します
  • allow-rootの値をtrueに変更します

    <key>system.privilege.taskport</key>
    <dict>
        <key>allow-root</key>
        <false/> // change to -> <true>
        <key>class</key>
        <string>user</string>
        <key>comment</key>
        <string>Used by task_for_pid(...).
        ...
    </dict>
    

これで、jenkinsを使用してUIAutomationを実行できるようになりました-コマンドラインスクリプトを介したテスト

編集

jenkinsにビルドの成功を認識させるために、私には完璧な解決策はありませんが、次の回避策があります。

...
echo "Run instruments simulator"

instruments -t "$ORDER_AUTOMATION_TEST_TEMPLATE_PATH" "$FILE_DEBUG_APP" -e UIASCRIPT "$ORDER_AUTOMATION_TESTSCRIPT_PATH" -e UIARESULTSPATH "$DIRECTORY_INSTRUMENTS_RESULT"

returnCode=0

if test -a "Run 1/Assertion failed.png"; then
echo "failed"
returnCode=1
else
echo "passed"
returnCode=0
fi

rm -fR "Run 1"

rm -fR "instrumentscli0.trace"

echo "Removing app dir"

echo "$FILE_APPLICATIONS"

rm -fR "$FILE_APPLICATIONS"

echo $returnCode

exit $returnCode

編集2 自動化テストが正常に実行されたかどうかを確認するためのより良い方法:

# cleanup the tracefiles produced from instruments
rm -rf *.trace

##kill simulator afterwards
killall "iPhone Simulator"

##check if failures occured
# fail script if any failures have been generated
if [ `grep "<string>Error</string>" "$WORKSPACE/Automation Results/Run 1/Automation Results.plist" | wc -l` -gt 0 ]; then
    echo 'Build Failed'
    exit -1
else
    echo 'Build Passed'
    exit 0
fi
于 2012-07-10T20:03:46.933 に答える
2

これは、マーベリックスとヨセミテで役立ちます:(アレクサンダーの回答に基づく)

$ security authorizationdb write system.privilege.taskport allow

于 2014-10-21T11:26:46.947 に答える