menu
書いてる野郎
orebike@gmail.com
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 で開発していた場合ここでテストが見えないので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
ファイル監視モードに入って、どれかファイルが更新されたら即自動的にテストが実行されるようになる。
普通に何も考えずに書くと各テストは並列実行されていて、その順番は実行の度に前後したりする。