プログラムが正しく動くかどうかを検証するには以下の方法が考えられます:
最後の検証方法を毎回行うのは大変なので(アルゴリズムの論文を書くときには必須ですが)、手軽な方法として
このアプローチが経験的にうまくいくことが知られています。
Scalaでのテストコード作成には
が有名です。今回は構文が比較的わかりやすいScalaTestについて紹介します。
Scalaのプロジェクトの作成の例では、ScalaTestをすぐ使えるようになっています。libraryDepenedencies
に、
"org.scalatest" %% "scalatest" %% "2.0.M1" % "test"
を追加する記述があるのを確認してください。
# テストコードを実行
$ bin/sbt test
# ソースコードのの更新がある度にテストコードを繰り返し実行
$ bin/sbt "~test"
ScalaTestではいろいろなスタイルでテストコードが作成できます。以下は、WordSpecでの例:
// よく使う機能の組み合わせをtraitにまとめておくと便利
trait MySpec extends WordSpec with ShouldMatcher
class FASTATest extends MySpec {
"A parser" should {
"read .gz fasta files" in {
...
}
"read tar.gz fasta files" taggedAs(Tag("debug")) in {
...
}
}
}
特定のテストコードを繰り返して実行
$ bin/sbt "~test-only *FASTATest"
ScalaTestのテストコードには、taggedAs(Tag("tagname"))
でタグを付けるこ
とができます。テストを実行する際に、以下のように指定されたタグが付いた
テストのみを実行することができます。一部のコードに集中してデバッグした
いときに便利。
$ bin/sbt "~test-only *FASTATest -- -n debug"