ENV['NOKOGIRI_USE_SYSTEM_LIBRARIES'] = 'YES' gem "rspec", "~> 2.14.1" gem "simplecov", "~> 0.8.0"
はじめに 先週の土曜日(2015年5月16日)に西脇.rb&神戸.rbで「Rubyistのためのテストコード相談会 ~テストの書き方に悩んでいませんか?~」という勉強会を開催しました。 この勉強会は「テストコードに関する疑問や悩みをみんなで持ち寄り、みんなで解決すること」を目的にした勉強会です。 勉強会中はいろいろと興味深い議論が出たので、今回のエントリではその内容を簡単にまとめてみます。 勉強会で挙がった質疑応答 よく使うフレームワークは? RSpecが大多数、Minitestが若干名。 gemを開発するときはMinitest、RailsはRSpec、というように開発内容によってフレームワークを使い分ける、という人もいた。 Minitestってどうなの? 導入が簡単。assertメソッドだけ知っていればなんとかなる。 Railsにも対応している。Capybaraも使える。 RSpecのs
テストを書くならカバレッジ計測と行単位で通った・通ってないの確認ができたらいいな、と思っていたら @tmtms さんより「SimpleCov」を教えていただきました。 GitHub - colszowka/simplecov: Code coverage for Ruby 1.9+ with a powerful configuration library and automatic merging of coverage across test suites 導入手順 Gemfileに「simplecov」を追加 group :development, :test do # Call 'byebug' anywhere in the code to stop execution and get a debugger console gem 'byebug' gem 'rspec-rail
自分の書いたテストが、全体コードの何割を占めているかを示す指標をテストカバレッジといいます。数値化されるのでテストの妥当性の検証に役立ちます。 今回はそのカバレッジを調べるRubyライブラリ simplecov を調べてみました。 インストール gemパッケージですので次の通りインストールします。 $ gem install simplecov rails で使う場合は、Gemfile に次のように追加してbundle します。 gem 'simplecov', :require=>false, :group=>true テストで計測の時に require するのでここでは読み込まないようします 使い方 ヘルパメソッドに追加(初回のみ) test/test_helper.rb (RSpecの場合は spec/spec_helper)の一番最初に次の行を追加しまう require 'simp
環境 ruby 2.2.6 rails 4.2.0 rspec-rails 3.5.2 simplecov 0.13.0 codecov 0.1.9 事前準備 CircleCIの登録 codecovの登録→リポジトリ登録 特につまづくとこはないと思う。 CircleCI導入はいろんな人が書いてるのでそちらにお任せして割愛。 「カバレッジ出力+codecovへのアップロード」するための修正 group :test do gem 'simplecov', :require => false gem 'codecov', :require => false end require 'simplecov' # save to CircleCI's artifacts directory if we're on CircleCI if ENV['CIRCLE_ARTIFACTS'] dir = Fi
SimpleCov gemのカバレッジが上記のうち、どれにあたるかというと、厳密にはどれにも該当していないというのが、正しいと思います。 例として、次のコードのカバレッジを計測してみます。 このコードはgithubにもおいてあるので、結果のhtmlなどは、そちらを参考にしてください。 require "simplecov_sample/version" module SimplecovSample class Sample def initialize(name = "") @name = name end [:test1, :test2, :test3].each do |method_name| class_eval <<-RUBY_EVAL, __FILE__, __LINE__ + 1 def #{method_name}() # def test1() "#{method_nam
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く