.NETでUnitTestを書いたときにはdotCoverというカバレッジツールを使用してカバレッジを測定していました。NCoverやらその他のツールもあったのですが、JetBrainsのツールの手軽さとResharperのUnitTestRunnerとのコンボが便利でこちらを使用していました。
Rubyではカバレッジ測定ツールはないのかしらと思っていたところ、SimpleCovというツールがあることを知りましたので早速試してみることにしました。
■SimpleCov https://www.ruby-toolbox.com/projects/simplecov
利用方法はとても簡単で、3ステップで利用可能になります。
1.gemファイルへ設定の追加とbundle installによるファイルのインストール
gemファイルに下記の内容を追記して bundle install を実行します。
[sourcecode language="ruby"] gem 'simplecov', :require => false, :group => :test [/sourcecode]
2.Railsプロジェクトのtest_helper.rbの1行目に以下の内容を追記します。
ここでとても重要なことは、1行目に追記することです。Railsアプリケーションが起動する前にSimpleCovが動作する必要があるのです。
[sourcecode language="ruby"] require 'simplecov' SimpleCov.start 'rails' [/sourcecode]
3.テストを実行し、実行後に作成されるレポートを確認します。
テストを実行後、coverage というフォルダが作成されます。その中にindex.htmlが生成されるので内容を確認するとカバレッジ結果が表示されます。
実行結果
カバレッジの詳細
たった2行のコードを追加するだけでこれだけのレポートを出力してくれるツールというのはすばらしいと思います。後はJenkinsとの連携を設定すればテストの精度向上と継続的インテグレーションによる早期不具合検出でサイクルを作れそうです。ちょっとわくわくしてきますねw