Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Test::Unit と RSpec の違いって? #186

Closed
katorie opened this issue Apr 24, 2014 · 7 comments
Closed

Test::Unit と RSpec の違いって? #186

katorie opened this issue Apr 24, 2014 · 7 comments

Comments

@katorie
Copy link
Member

katorie commented Apr 24, 2014

RailsチュートリアルではRSpecを採用していますが、RailsではデフォルトでTest::Unitフレームワークが存在します。
チュートリアルがRSpecを採用しているのはなぜなのか…チュートリアルを進めていくとわかるのかもしれませんが、はじめにちょっと比較しておくと、理解が深まるのでは?と思いました。

  • Test::Unit と RSpec の違い
  • それぞれのいいところ・よくないところ

などが整理できるといいなと思います。

それから、
どっちも書いたことあるよ!みたいな話とか、現場でこんな話したよとか教えてもらえるとうれしいなぁなんて思っていますので、気軽な感じで書き込んでもらえると、とても参考になってうれしいです。

@katorie
Copy link
Member Author

katorie commented Apr 24, 2014

ざっくりとした印象だと、RSpecのほうが人気!書きやすい!みたいな感じがします。

@yachibit
Copy link

そういえば、るびまにRSpecの記事がありましたね

@bonbon0605
Copy link
Contributor

yachibitさんご紹介の記事に加えて、
同じくるびまの
エンドツーエンドテストの自動化は Cucumber から Turnip へ
も読んで、自分なりに整理してみました。
「テストについてのおさらい」という章がテストの概要を知れて良かったです。

実装しての話ではなくて、文章を読んだ解釈だけで書いてますので、
是非色々他の方のお話も伺いたいです。

やれること

  • 基本的には同じ
  • ただ、RSpecの方が「統合テスティング環境」として周辺ツールが使いやすい

実装面での違い

  • Test::UnitはTest::Unit::TestCaseのサブクラスとしてテストを実装
  • RSpecはRSpecが提供するAPIを利用したRubyスクリプトとして実装

思想(?)的な違い

だいぶ個人的な解釈が入っているので、自信ないです:sweat:

Test::Unit

  • 作られたクラスやメソッドを動かして文字通り「テスト」する感じ
  • 実装するのは「テストケース」であり、「動作のサンプル(1例)」

RSpec

  • RSpecで記述するのは、クラスやメソッドについての「振る舞い」「期待すること」
  • 「テストというよりは設計」であり、TDDやBDDに繋がる

立ち位置的な違い

  • Test::UnitのほうがベタでRSpecの方がメタ
  • メタにした方が内容が分かりやすくなる

どちらが良いのか

  • RSpecの方が書きやすく、読みやすい?
  • 実際に書いてみると分かる?

@katorie
Copy link
Member Author

katorie commented Apr 26, 2014

@yachibit すごい詳しい記事!ありがとうございます。
ちなみにお仕事でテスト書いたりしていますか?
差し支えなければどちらで(あるいは他のもの)書いているかとか聞かせてもらえるとうれしいです!

@katorie
Copy link
Member Author

katorie commented Apr 26, 2014

@bonbon0605 すごい見やすくまとまってる!!ありがとうございます。

「テストというよりは設計」であり、TDDやBDDに繋がる

というのが印象的。

@yucao24hours
Copy link
Member

DHH は RSpec がキライだから Rails のデフォルトが Test::Unit なんだと聞きました 💣 (あと Cucumber)
http://www.rubyinside.com/dhh-offended-by-rspec-debate-4610.html

@yucao24hours
Copy link
Member

#729 の方針にのっとり、現時点でアクティブでなさそうな issue についてはひとまず close させていただきました。
ただし、「今後これの話はいっさいしないで!」というわけではなく、あくまでも ホットなものを open のステータスにしておきたいという私の希望からであって、他意はまったくありません。
私以外のどなたかが「これ必要!」と思った場合はぜひ遠慮なく reopen してくださいね 🌹

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants