はじめに
先日Qiitaでこんな記事を拝見しました。
この記事の中に以下のような記述がありました。
RSpecとは
Ruby用のテスティングフレームワーク。
Ruby on railsには標準でminitestが搭載されているが、より多く使われているのはRSpec(主観)
最後に書いてある「主観」がちょっと気になりますね。
僕もたしかにそんな気がするのですが、僕の考えもやっぱり主観でしかありません。
そこで、Twitterを使ってアンケートを採ってみることにしました。
「一番よく使っているテスティングフレームワークはどれですか?」というアンケートです。
さあ、そのアンケート結果がどうなったかというと・・・
結果はRSpecが77%で(やっぱり)1位!
投票結果は以下のとおりで、RSpecが1位(77%)となりました(主観どおりでしたね)。
【Rubyプログラマ向けアンケート】
— Junichi Ito (伊藤淳一) (@jnchito) 2018年3月7日
結構ベタなテーマですが、あらためてアンケートしてみようと思います。
Rubyであなたが一番よく使っているテスティングフレームワークは何ですか?
Which testing framework do you use most in Ruby?
続いて、minitestが2位(14%)、test-unitが3位(6%)となっています。
投票数は322票と、まあまあ集まったので、それなりに信頼できる数値なんじゃないかと思います。
回答してくれたのはおそらく日本人が多いと思うのですが、できたら投票した人の国の分布も見たかったですね。
もしかすると「日本では特にRSpecの利用者が多い」みたいな分布になっているかもしれません。
各フレームワークに対する個人的な感想
ところで、参考までに、アンケートの選択肢に上げた各フレームワークについて、個人的な感想をつらつらと書いてみます(あくまで個人の感想です)。
RSpecについて
僕も一番よく使うのはRSpecです。
特に、仕事で書くテストコードはほぼRSpecですね。
RSpecを使う理由は「最初からいろんな機能が全部入ってて便利だから」です。
ちょっとテストコードのここだけを共通化したい、とか、モックで少し凝ったことをやりたい、みたいなときにRSpecの標準機能でほぼ完結するのが便利だな~と感じています。
ネット等では「構文が嫌い」という意見をよく見かけますが、僕自身は特にRSpecの構文が嫌だと思ったことはありません。
minitestについて
次によく使うのはminitestです。
minitestはごくごく簡単なRubyプログラムの動作確認をしたりするときに使います。
デフォルトでRubyにインストールされるので、すぐに使えて便利です。
そうそう、僕が執筆した「プロを目指す人のためのRuby入門」で使っているのもminitestですね。
プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発・デバッグ技法まで (Software Design plusシリーズ)
- 作者: 伊藤淳一
- 出版社/メーカー: 技術評論社
- 発売日: 2017/11/25
- メディア: 大型本
- この商品を含むブログを見る
ただ、RSpec並みに凝ったことをやろうとすると、プラグインをたくさん入れたり、継承やらモジュールやらを駆使したりすることになるので、業務レベルのテストコードではminitestは使いません(僕の場合は)。
test-unitについて
test-unitはあまり使うことがないですねえ。残念ながら。。
「test-unitもデフォルトでRubyにインストールされる、minitestみたいにシンプルに書ける、なおかつminitest以上にデフォルト機能は豊富」という特徴はあるのですが、Railsの標準テスティングフレームワークがminitestだったり、機能豊富といってもRSpecの方がさらに上だったりするので、わざわざtest-unitを選択する動機がなかったりします。
あと、ドキュメントやネットの情報の少なさも気になります。
使い方を調べるのに毎回コードを見に行くというのも、ちょっと億劫に感じます(もちろん、コードを読むことは大事ですが)。
注意:アンケート結果=テスティングフレームワークの優劣ではない
テスティングフレームワークについては、どれが良くて、どれが悪い、という話ではなく、あくまで「適材適所」の話だと思っています。
僕の場合はそのときどきのニーズに応じて、RSpecとminitestを使い分けています。
ですので、このアンケート結果は別にフレームワークの優劣を示しているわけではない、という点に注意してください。
まとめ
というわけで、この記事ではTwitter上で実施した「Rubyのテスティングフレームワーク・アンケート」の結果を紹介しました。
他のRubyプログラマがどんなテスティングフレームワークを使っているのか、気になっている人の参考になれば幸いです。
あわせて読みたい
過去に書いたRSpecとminitestの比較記事です。
PR:Rails 5対応版のEveryday Railsが発売中です!
僕が翻訳している電子書籍「Everyday Rails - RSpecによるRailsテスト入門」が、先日Rails 5に対応しました。
「RSpecでRailsのテストコードが書けるようになりたい!」という人はぜひ読んでみてください。
本書の詳細については、こちらのブログエントリで紹介しています。