JavaScriptユニットテストのコードカバレッジを測定するには、コードをインストルメント化し、テストを実行して、後処理を実行する必要があります。
私の懸念は、結果として、本番環境では決して実行されないコードを単体テストすることです。 JavaScriptはコンパイルされていないので、テストするものは正確に実行するものでなければなりません。
これが私の質問です、これをどのように処理しますか?私が持っていたと思っていたのは、本番用コードでユニットテストを実行して、合格に失敗することでした。次に、インストルメンテーションを使用してプロダクションコードのシャドウを作成し、ユニットテストを再度実行します。これにより、コードカバレッジの統計が得られます。
これより少し優雅な方法に出くわした人はいますか?
[〜#〜] edit [〜#〜]単体テストを実行するためにブラウザーを使用する必要があるため、ブラウザープラグインを使用したくありません。
JavaScriptのコードカバレッジツール でこれを読んでください。リンクはいくつかありますが、ほとんどは実際にはブラウザーの拡張機能です。
ただし、 JsTestDriver を検討してください。これは コードカバレッジサポート を備えており、別のテストツール( HtmlUnit など)と接続することにより、ブラウザーの外部でテストできます。 。
私はアンチテストではありませんが、クライアント側のJavaScriptで「コードカバレッジ」を確立しようとするというまさにその概念は、要点を逃したように私を驚かせます。あなたが持っていない問題を解決しないでください。作成したすべてのコードではなく、実際のリスクを心配します。私の本のリスクは、ユーザーが制御できないサードパーティのものと接触するコード、または同じCookie jarに手が多すぎる、ひどく設計されたアプリの一部です。アプリ全体が壊れやすく、回帰の問題が発生しやすい場合、最大のコードカバレッジを達成しようとすると、より悪いコードが有効になります。
クライアント側のJSでコードを実行するのは簡単です。作成時に行うすべてのことを徹底的にテストし、最初から回帰エラーを回避するために、すべてをクリーンで分離した状態に保つ必要があります。