scalatestと、JUnitのページからそれぞれ必要なjarファイルをダウンロードする。(今回はJUnit4)
結果的にscalatest-1.5.1.zipとjunit-4.9b3.jarが手に入る。
scalatestは解凍するとscalatest-1.5.1.jarがあるので、こいつとjunit-4.9b3.jarをScalaのインストールディレクトリ内にあるlibディレクトリの中に突っ込んで準備完了。
libディレクトリに置いておきたくない場合は、コンパイル時と実行時に毎回クラスパスに該当jarを指定すること。
テストのサンプルソースは以下のとおり。
プログラミング言語Scala 日本語情報サイトの01.02.JUnit 4 と ScalaTest の始め方の物をそのまま使わせていただいています。(先頭にコメントを追加)
//import org.scalatest.junit.AssertionsForJUnit
import org.scalatest.junit.JUnitSuite
import scala.collection.mutable.ListBuffer
import org.junit.Assert._
import org.junit.Test
import org.junit.Before
/**
* /////////////////////////////////////////////////////////////////////////////////////////////
* Scalaでユニットテストのサンプル
* クラスパスに、JUnitとscalatestのjarファイルを加えておく必要がある。
* 通常の開発環境であれば、SCALA_HOME/lib/の下に置いておけば自動的にクラスパスに含まれるので楽。
* /////////////////////////////////////////////////////////////////////////////////////////////
* JUnitで実行する場合は以下のコマンド
* scala org.junit.runner.JUnitCore ExampleSuite
*
* scalatestで実行する場合は以下のコマンド
* scala org.scalatest.tools.Runner -p . -o -s ExampleSuite
* ちなみに、 -p . の . を省けばSwingウインドウが起動する
*
* どちらで実行する場合でも、JUnitSuiteを継承していれば問題無し。JUnitSuiteはAssertionsForJUnitをtraitとして使っている
*/
//class ExampleSuite extends AssertionsForJUnit {
class ExampleSuite extends JUnitSuite {
var sb:StringBuilder = _
var lb:ListBuffer[String] = _
@Before def initialize() {
sb = new StringBuilder("ScalaTest は")
lb = new ListBuffer[String]
}
// JUnitスタイルのアサーションを使用
@Test def verifyEasy () {
sb.append("かんたん!")
assertEquals("ScalaTest はかんたん!", sb.toString)
assertTrue(lb.isEmpty)
lb += "sweet"
try {
"verbose".charAt(-1)
fail()
} catch {
case e:StringIndexOutOfBoundsException => // こうなるはず
}
}
// ScalaTest アサーションを使用
@Test def verifyFun() {
sb.append("たのしい!")
assert(sb.toString == "ScalaTest はたのしい!")
assert(lb.isEmpty)
lb += "sweeter"
intercept[StringIndexOutOfBoundsException] {
"concise".charAt(-1)
}
}
}