ScalaTest
この文章は2011年6月10日時点(Ver.1.5)の ScalaTest 公式ウェブページの和訳です。
最新の情報については、原文を参照ください。
少ないコードで、より明瞭に
ScalaTest は、Java プラットフォームのためのオープンソーステストフレームワークです。
数行のテストコードを書くだけで、あなたの生産性を向上させるよう設計されています。
また、このテストコードによって、あなたの意図をより明確に表現できます。
import org.scalatest.FlatSpec
import org.scalatest.matchers.ShouldMatchers
class StackSpec extends FlatSpec with ShouldMatchers {
// 「スタック」は「後入れ先出し」方式で値をPOPする
"A Stack" should "pop values in last-in-first-out order" in {
val stack = new Stack[Int]
stack.push(1)
stack.push(2)
stack.pop() should equal (2)
stack.pop() should equal (1)
}
// 空のスタックにPOPを実施した場合は、NoSuchElementException を投げる
it should "throw NoSuchElementException if an empty stack is popped" in {
val emptyStack = new Stack[String]
evaluating { emptyStack.pop() } should produce [NoSuchElementException]
}
}
ScalaTestは、Scala または Java のコードをテストすることができます。
ポピュラーな開発ツール(JUnit, TestNG, Ant, Maven など)と共用することで、新規/既存の Scala/Java プロジェクトのテストを、より高く、生産的なレベルに引き上げてくれます。
開発者が変われば、ソフトウェア作成のアプローチも変わるものです。
ですから、ScalaTest は異なったスタイルのテストが行えるように設計されています。
ScalaTest は、いくつかの trait を提供します。あなたは最も生産的だと感じるやり方で、これらを組み合わせればよいのです。
たとえば、上記の例は、ビヘイビア駆動開発(BDD)スタイルの一例です。
これを実行すれば、あなたはこのソフトの非公式仕様を、テストによって確認できます。
$ scala -cp scalatest.jar org.scalatest.tools.Runner -p . -o -s StackSpec
Run starting. Expected test count is: 2
StackSpec:
A Stack
- should pop values in last-in-first-out order
- should throw NoSuchElementException if an empty stack is popped
Run completed in 96 milliseconds.
Total number of tests run: 2
Suites: completed 1, aborted 0
Tests: succeeded 2, failed 0, ignored 0, pending 0
All tests passed.
BDDをやる気なんてない?問題ありません。
ScalaTest には、たくさんの選択肢(trait)があります。
もしあなたが、Scala の開発でも JUnit や TestNG でテストを書き続けたいと思っているなら、ScalaTest はそのための trait を持っています。
もしあなたが、ユニットテストのための高階関数が好きなら、または結合テストや受け入れテストを実施したいのなら、ScalaTest はそのための trait を持っています。
これは、ほんの一例です。
要するに、ScalaTest は非常に高い柔軟性を持っています。
そして、たとえビルトイン trait のいずれも、あなたのニーズとマッチしなかったとしても、テストを設計する上で有用な、多くの拡張を提供します。
試してみない手はないでしょう?
まず、ScalaTest をダウンロードし、次に、クイックスタートをご覧になってください。