web-dev-qa-db-ja.com

ScalaTestとScala Specs単体テストフレームワークの違いは何ですか?

両方ともScala Scalaで記述されたBDD(Behavior Driven Development)対応の単体テストフレームワークです。そして 仕様 に基づいています ScalaTest フレームワークも含まれる場合があります。しかし、仕様はScalaTestが提供しないものを提供しますか?違いは何ですか?

119
Alex

主な違いは(主に仕様の観点からです:-)):

  • ScalaTestは、仕様よりも多くの「テストスタイル」を提供します( クイックスタート ページの各箇条書きにアクセスして、各スタイルの詳細ビューを取得できます)

  • ScalaTestとspecsには異なるマッチャーのセットがあります。 ScalaTestでは here を、specでは here を比較できます。その点で、仕様には仕様を記述するときに好きになる可能性のある多くの小さな機能があります:xmlマッチャー、マッチャーの構成(マッチャーを変換して再利用する簡単な方法)、正確な障害、長い文字列の詳細な違い、.. 。

  • Mockitoには、仕様でNice BDDがサポートされています: Mockito

  • specsには DataTables があります。これにより、テーブルの種類で多くの小さな例をグループ化することができます(演算子をテーブル区切り文字として使用できる場合)

  • 仕様では、すべてのレベルでlibidumおよび 自動クリーンアップ としてネストされた例を定義できます

これは確かに非常に部分的で偏った比較であり、他にも多くの違いが存在します(そして、ライブラリはまだ進化しています...)。

結局のところ、それは本当にあなたのテスト/指定スタイルに依存していると思います。単純な場合(単純な仕様構造、セットアップ、期待など)、両方のライブラリは非常によく似ています。それ以外の場合は、どちらも物事をどのように行うべきかについての見解を持っています。これの最後の例として、タグ付けを見ることができます:in ScalaTest とin specs

これがお役に立てば幸いです。

48
Eric

私が知っている限りでは、いくつかの高度に特殊化された機能がなければ、スタイルに応じた個人的な好みになります。

4

IDEサポートは別のポイントかもしれません

私はJUnitを介してSpecsをEclipseで動作させようとしてきましたが、公式のソリューションは少し「ハック」であることがわかりました。仕様のセットアップ: http://code.google.com/p/specs/wiki/RunningSpecs#Run_your_specification_with_JUnit4_in_Eclipse

ScalaTestと(JUnitを介した)の統合は、少しハックが少ないようです。それでも、JUnitやJavaほどうまく動作するものはありません。

ScalaTestのセットアップ: http://groups.google.com/group/scalatest-users/web/running-scalatest-from-Eclipse

2
Grav

決定要因の1つがコンパイル時間である場合、 scalatestのパフォーマンスが向上しているようです

現在、プロジェクトでspecs2を使用していますが、テストではコンパイル時間が遅くなります。 scalatestへの移行に関するPOCを終えたばかりで、ソースのいくつかの2つのフレームワークを切り替えるだけで、コンパイル時間が約0.82倍短くなったことがわかりました。

0
sebi