測試覆蓋率在測試中的環節也是需要顧及的,我們今天會使用 SimpleCov
來算測試覆蓋率
gem 'simplecov', require: false, group: :test
可以放在 test/test_helper.rb
(or spec_helper.rb
, rails_helper
, cucumber
env.rb
)
因為只需要在測試環境所以可以用 env 判斷
if ENV['RAILS_ENV'] == 'test'
require 'simplecov'
SimpleCov.start 'rails'
puts "required simplecov"
end
現在來跑專案中全部測試 RAILS_ENV=test rspec spec
Coverage report generated for RSpec to
/Users/cyberbiz/Desktop/ck/rspec_practice/coverage. 10 / 40 LOC (25.0%) covered.
跑完測試之後,就可以直接打開 SimpleCov 幫你產出的 coverage/index.html
$ open coverage/index.html
其實就看得出來目前測試覆蓋率總共幾% 也能點進檔案中看哪幾行呈現紅色,代表就是沒有跑到。反之,綠色代表有跑且最右方會算總共跑了幾次
測試覆蓋率不是代表 100% 就是最好,覆蓋率越高其實開發成本也越高,所以還是測一些該測的就好拉~