2

私は次のようなミニテストファイルをテストしようとしています:

COVERAGE=true ruby -Itest test/views/info_pages_test.rb
COVERAGE=true ruby -Itest test/views/errors_test.rb

これで、info_pages_testのカバレッジは97%になり、errors_testのカバレッジは75%になりました。一緒にそれらは100%をカバーするはずです..しかし、上記のコマンドを実行するたびに、いずれかの結果が75%または97%得られます。2つのテストファイルの結果を1つのカバレッジレポートに結合する方法はありますか?

助けていただければ幸いです!

これが私のminitest_helper.rbファイルの先頭です

## SimpleCOV

require 'simplecov'

if ENV["COVERAGE"]

  SimpleCov.start('rails') do

    add_filter "/test/"

  end
  puts "Started SimpleCOV"
end

また、アプリケーションルートに.simplecovファイルがありますが、それを使用すると予測できない結果が得られます。たまに100%のカバレッジが得られ、予測できません。

.simplecovファイル

SimpleCov.use_merging true
SimpleCov.merge_timeout 3600
4

1 に答える 1

5

SimpleCov.command_name 'xyz'あなたがぶつかっている問題は、例えばキュウリとrspecの結果をマージするときとは対照的に、スイート名(を介して構成可能)のために、これらの「テストスイート」のそれぞれが互いに上書きすることです。

推奨される解決策:レーキテストまたは他の同様の機能を使用して、テストスイート全体を一度に実行することにより、カバレッジレポートを生成します。

SimpleCov.command_name "MiniTest #{Time.now}"個々のテストファイルを実行することを主張する場合は、疑似ランダムコマンド名を指定するか、または(設定に応じて)ARGVを使用して、結果を上書きする代わりに、SimpleCovをだましてそれらの結果をマージできますSimpleCov.command_name "Minitest #{File.basename(ARGV[1])}"。後者には、マージ時に上書きされるため、同じテストファイルの再実行で結果が重複しないという利点がありますが、すべてのテストを実行してARGVまたはテストフレームワークの存在を正しくチェックしないと失敗する可能性がありますあなたがそれをつかむことができる前にARGVを改ざんします。

これは個々のテスト実行で機能させることができますが、他のアプローチではエラーの余地があるため、通常、カバレッジレポートは完全なテストスイートの実行のみに基づいて作成することをお勧めします。

于 2013-03-25T14:18:29.820 に答える