Scala/ScalaTest

Scala/ScalaTest

sbt への設定

build.sbt へライブラリの使用を追記

lazy val root = (project in file(".")).
  settings(
    name := "hogehoge",
    version := "1.0",
    scalaVersion := "2.11.7",
    libraryDependencies += "org.scalatest" % "scalatest_2.11" % "2.2.4" % "test"
  )

ケツに test ってつけることでテストの時のみ使うことを明示

テスト用ディレクトリ作成

テスト対象のクラスと同一構成のディレクトリを main ではなく test ディレクトリ以下に作成

構成は Scala/sbt/Scalaプロジェクトをビルドしてみる を参照。

テストを作る

ScalaTest はイロイロなスタイルでテストが書けるようになっているが今回は FunSuite というものを使う

import org.scalatest.FunSuite
 
class HogeSuite extends FunSuite {
}

Eclipse

Eclipse で開発していた場合ここでテストが見えないのでPJを sbt で再生成する。

$ sbt eclipse

Eclipse から見えるようになった

テストメソッドを書く

こんな感じとなる

class HogeSuite extends FunSuite {
  test("hello hogehoge suite") {
    assert("hogehoge" == "hogehoge")
  }
}

この形式を見ると、これコンストラクタでメソッド実行している。

テスト実行

sbt 経由で実行

$ sbt test
[info] Loading project definition from hogehoge project
[info] Set current project to ...
[info] HogeSuite:
[info] - hello hogehoge suite
[info] Run completed in 197 milliseconds.
[info] Total number of tests run: 1
[info] Suites: completed 1, aborted 0
[info] Tests: succeeded 1, failed 0, canceled 0, ignored 0, pending 0
[info] All tests passed.
[success] Total time: 1 s,...

動いた

Eclipse からも Run As から実行できることがわかる。

このようにチルダ付きで起動すると

$ sbt ~test

ファイル監視モードに入って、どれかファイルが更新されたら即自動的にテストが実行されるようになる。

テストの実行順番

普通に何も考えずに書くと各テストは並列実行されていて、その順番は実行の度に前後したりする。

scala/scalatest.txt · 最終更新: 2015-09-22 18:59 by ore