ScalaTest

この文章は2011年6月10日時点(Ver.1.5)の ScalaTest 公式ウェブページの和訳です。

最新の情報については、原文を参照ください。

http://www.scalatest.org/

少ないコードで、より明瞭に

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 をダウンロードし、次に、クイックスタートをご覧になってください。