1

今日はInstrumentsの自動化ツールで遊んでいましたが、動作テストの作成に問題がありました。次の例はで終了しIssue: Script ended without explicting closing this testます。はい、メッセージは実際に明示的に言っています。これは、Xcodeの最近のバージョンで導入されたタイプミスだと思います。このツールを使ってみたのはこれが初めてです。6に設定cellCountすると合格になりますが、「スクリプトが終了しました」というメッセージが表示されます。私はそれを間違っていますか、それとも自動化ツールにバグがありますか?

UIALogger.logStart("Start Simple Test");
var target = UIATarget.localTarget();
var cellCount = 7;

UIALogger.logMessage("cell count: " + cellCount);

if (cellCount != 6) {
    UIALogger.logFail("Failed");
}

UIALogger.logPass("Passed");
4

5 に答える 5

2

ロググループを間違って閉じていることが原因だと思います。と言うとlogStart()、instruments でログ グループを開始し、その後にログを記録するすべてのものがlogMessage()またはlogError()でそのグループに囲まれます。

グループを閉じます または しようとしたように見えますが、呼び出すことができるのはどちらか一方logFail()だけlogPass()です。logPass()次のように呼び出すには、そこにelse句が必要です。

if (cellCount != 6) {
    UIALogger.logFail("Failed");
} else {
    UIALogger.logPass("Passed");
}

不思議なことに、あなたのコード スニペットを UI オートメーションに貼り付けたときに、あなたが言及した問題のエラーが発生しませんでした。2 つのログ グループがトレース ログに出力されました。上で述べたように、else 句を使用してみて、それが機能するかどうかを確認してください。

于 2013-02-14T02:01:33.397 に答える
1

ここで本当の問題を見つけました。基本的に、指定された時点でさらにテストするためにアプリが使用可能なモードになっていないと言っています。したがって、この場所で合格/不合格にするか、適切な遅延を追加してください。

これを回避する最も簡単な解決策は、各ページ ナビゲーションの後に 2 秒の遅延機能を 1 つ設定することです。これにより、パノラマでデータを取得して表示した後、各ページにデータが読み込まれます。そして、スクリプトはスムーズに実行されます。

//Step:1 ナビゲート/タップ

UIATarget.localTarget().delay(2);

//検証

//ステップ: 2 ナビゲート/タップ

UIATarget.localTarget().delay(2);

//検証

于 2014-04-14T06:19:53.550 に答える
0

異なるメッセージ間に遅延を設定すると、実際にメッセージが表示され、問題が評価されることがわかりました。私が始めた問題は、2 つの連続する logMessages が正しく表示されないことでした (最後の 1 つが削除されました)。

UIALogger.logMessage("This is some text");
UIALogger.logMessage("This is some text");
//UIATarget.localTarget().delay(1);

1つの出力行のみを示しました。コメントを外すと2つ表示されます...これはやや...矛盾しているようです-そしてもっとあります:(これはウルフに行きます)

UIALogger.logStart("Add to Whishlist");
UIALogger.logMessage("My Story Title: ");
//UIATarget.localTarget().delay(1);
UIALogger.logMessage("Innocuous Message.");
//UIATarget.localTarget().delay(1);
if (true)
    UIALogger.logPass("Add to Whishlist");
else
    UIALogger.logFail("Add to Whishlist");

ここで「問題」が発生しました。コメントを外すと、これを解決するのに役立ちました。私は知っています、これは解決策ではありません。しかし、それは私にとって回避策として機能しました。

logStart、logFail、または logPass の「文字列」は、実際には問題ではありませんでした。

于 2014-01-28T13:35:15.947 に答える
0

奇妙です。上記とまったく同じ問題が発生しており、このelse句も使用しています。

ifまた、パスまたは失敗をログに記録するステートメントの直前に、上記のように二重ログ記録方法を試しました。

UIALogger.logMessage("My Story Title: " + titleDisplayed);
UIALogger.logMessage("Innocuous Message.");

Issueそして FAIL を取得しましたが、これは問題ありません。" " 結果と " script ended without expliciting" メッセージ以外のものが欲しかったのです。そこで、//2 番目のlogMessageステートメントにコメントを付けてテストを再実行したところ、今度は " Issue" と " script ended without explicating" が再び得られました。

したがって、彼の上記のヒントは本物であることが確認されています。

Xcode と Instruments バージョン 4.6 を実行し、iPhone エミュレーターを 6.1 プロジェクトとして実行しています。

- -アップデート -

何をやっても合格・不合格がうまくいきません。ある実行Issue: Script ended without explicatingで、ログに激怒する " " メッセージが表示されます。その後、スクリプトに変更を加えると (余分な空白を追加して保存し、再度実行するだけであっても)、良い合格または不合格の結果。

しかし、その後すぐにテストをまったく変更せずに再度実行すると、" Issue: Script ended without explicating" メッセージが表示されます。これは、スクリプトに意味のない変更を加えて保存し、再度実行するまで消えず、この時点で可能性があります。適切な合格/不合格の結果が得られる可能性があります (常に発生するとは限りません) が、スクリプトを再度実行すると、再び " Issue: Script ended without explicating" が返されます。

一体何?私は実際に Xcode 4.6 を再インストールするのに時間がかかりましたが、動作を変更することはできませんでした。私はひどくイライラしています。これは Instruments のバグのようです。これを Apple に報告する方法はありますか?

于 2013-03-06T22:44:30.747 に答える