LoginSignup
3

More than 5 years have passed since last update.

Rails で test-unit + simplecov を使おうとしてハマった(解決済み)

Posted at

タイトルの通り、Rails で test-unit と simplecov を使おうとしてハマったので、他の方の参考のためにメモっておきます。

そもそも適当にググッて設定したのが問題だったのですが、test-unit を使おうと思って Gemfile と test_helpers.rb を編集してテストしたところ、元は 100% だった C0 カバレッジが妙なことに…

 bundle exec rake test:helpers
Coverage report generated for Unit Tests to /Users/bsdmad/xxxxx/xxxx/coverage. 43 / 117 LOC (36.75%) covered.
Loaded suite /Users/bsdmad/.rbenv/versions/2.2.3/bin/rake
Started
.............

Finished in 1.22676 seconds.
---------------------------------------------------------------------
13 tests, 55 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed
---------------------------------------------------------------------
10.60 tests/s, 44.83 assertions/s

なぜかテストが開始される前にレポートが生成されています。しかも C0 カバレッジが 36.75% とか、意味不明 (--;。

結局、更にググッて色々と見ていたところ、simplecov は順序が重要らしい事が分かりました。更に Gemfile の記述で :require => false というのは、gem としては必要だけど require は別途行うよ(ここでは require しないよ)という事もわかりました。

ということで Gemfile を以下のように修正しました。

Gemfile
group :development, :test do
(省略)
  gem 'simplecov',        :require => false
  gem 'test-unit',        :require => false
  gem 'test-unit-rails',  :require => false
  gem 'test-unit-notify', :require => false
end

そして test_helper.rb の先頭を以下のようにします。

test_helper.rb
require 'simplecov'
require 'test/unit'
require 'test/unit/rails'
require 'test/unit/notify'

SimpleCov.start 'rails'

(省略)

この後、テストを実行したら正常にレポートが作成されました。


$ bundle exec rake test
Loaded suite /Users/bsdmad/.rbenv/versions/2.2.3/bin/rake
Started
.....................................................................
(省略)
............

Finished in 49.895481 seconds.
---------------------------------------------------------------------
612 tests, 2015 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed
---------------------------------------------------------------------
12.27 tests/s, 40.38 assertions/s
Coverage report generated for Unit Tests to /Users/bsdmad/xxx/xxx/xxx/xxx/coverage. 2507 / 2556 LOC (98.08%) covered.

順序、重要ってことですね。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3