web-dev-qa-db-ja.com

AngularJS、Karma / Jasmineテストの実行速度が遅いのはなぜですか?

Angularjsアプリに対して実行するいくつかの単純なカルマ/ジャスミンユニットテストがあります。最新バージョンのChrome=を使用し、WebStorm IDE内からテストを実行します。

時々テストスイートは非常に速く実行されます(0.24秒)

まったく同じコードに対するまったく同じテストスイートの実行が非常に遅い(120秒)

私はすべての常識的な修正を試みました。私は自分が間違っていることを試し、発見するためにWebを精査しました。

テストの実行速度が遅いのはなぜですか?

50
biofractal

答えは非常に簡単であることがわかりました。

私はChromeを使用してKarmaサーバーを実行しています。最初にKarmaサーバーを起動すると、Chromeのインスタンスが最大化されたウィンドウとして開始されます。これにより、実行中のテストを確認できます。

問題は、Chrome= CPUサイクルの最小化またはセカンダリタブ(切り替えられたタブ)が不足することです。

したがって、カルマサーバーを実行しているブラウザーインスタンスを最小化するか、単に別のタブに切り替えると、カルマサーバーのCPUが大幅に不足し、テストの完了に長い時間がかかります。

解決策は、カルマタブをアクティブに保つことです。ブラウザーウィンドウは他のウィンドウの背後に隠すことができますが、カルマタブ選択したタブでなければなりませんおよびブラウザー最小化してはいけませんです。

これらの単純なルールに従うと、テストが常にフルスピードで実行されるようになります。

119
biofractal

バイオフラクタルは彼自身の質問に答えました、そしてあなたはそれをすることができました。 PhantomJSまたはChrome Headlessで実行するようにテストを設定することもできます。これにより、基本的にユニットテストをコマンドラインでのみ実行できるため、実際のブラウザーの影響を排除できます。

0
Jim