11

私の現在の Ruby on Rails プロジェクトは rcov (具体的には、関連性 rcov ) を介してテストを行っており、かなり高い基準を持っています (コード カバレッジが 95% 未満の場合、ビルドは失敗します)。

これをテストするには、次のコマンドを使用します。

rcov_cmd = "rcov --rails --text-summary \
            --include #{included_dirs} \
            --exclude #{excluded_dirs} \
            --aggregate #{coverage_dir}/coverage.data \
            --output #{coverage_dir} \

今日、rcov レポートに緑色 (実行済み) を登録するコードを見つけました。Homever、このコードが実行されていないことを証明できます (関数の先頭で例外を発生させ、単体テストに合格します)

私はいくつかの調査を行い、rcov の --xrefs フラグを見つけました。これにより、rcov レポートの各行のすべての呼び出し元が追加されると思いました。

rcov コマンドを次のように変更しました。

rcov_cmd = "rcov --rails --text-summary --xrefs \
        --include #{included_dirs} \
        --exclude #{excluded_dirs} \
        --aggregate #{coverage_dir}/coverage.data \
        --output #{coverage_dir} \

(追加された--xrefsフラグに注意してください)。

コールサイト情報を追加する代わりに、テスト カバレッジを 96% から 48% にします。

--xrefs は、rcov が行う分析の種類を変更しますか? (コールサイト情報を収集するだけだと思っていました)。これは最初のコマンドとどう違う/より良いですか? (失敗した単体テストがある場合、単体テストのカバレッジが低下するのを見てきました。実行中にエラーが発生した場合、カバレッジのパーセンテージが低下する可能性があることは知っていますが、私には良さそうです)

4

1 に答える 1

1

rcovマニュアルから:

--[no-]callsites
    Show callsites in generated XHTML report. (somewhat slower; disabled by default)
--[no-]xrefs
    Generate fully cross-referenced report. (includes --callsites)

Rcov CallSiteAnalyzer クラスから

A CallSiteAnalyzer can be used to obtain information about:

    * where a method is defined ("defsite")
    * where a method was called from ("callsite")

このように rcov を分析すると、実行時間が長くなる代わりに、より正確なカバレッジ情報を提供できます。

于 2010-11-16T09:36:47.230 に答える