Scala Testing 環境設置筆記

Background

最近開始看 <Functional Programming in Scala> 4.7 stars on Amazon ,開始在寫書上的一些習題,第三章主要是在試著實作 List ,來熟悉一下 method declaration/pattern match/ generic functions 的一些 syntax 。本來寫著 exercise 也不知道自己寫的對不對,都要 hand write 一些 testing List 來驗證,於是乎覺得不如直接用 TDD 的方式,把 exercise 的解答給蓋出來。

Platform

OS: Ubuntu 14.0 server
Scala: scala 2.11.4
Testing Framework: scalatest

Method 1 - 只使用 scalatest

Script

#!/bin/env bash
testJar=/path/to/your/jar/scalatest_2.11-2.2.1.jar
scalac -cp $testJar *.scala
scala -cp $testJar org.scalatest.run
rm *.class 2> /dev/null

Usage

vi YourScala.scala
vi YourScalaTest.scala
./testall.sh

Download scalatest_2.11-2.2.1.jar

優點

  • 簡單
  • 微方便,只要下一道 shell script 就好

缺點

  • scala 的 startup 實在太久了。在我的 vm 上測試,每次 scala 啓動到 test 完,6 秒起跳。
  • 要自己 maintain scalatest jar 的位置

Method 2 - 使用 sbt

由於 scala 的啓動實在太久了,導致於每次 run testing 都要 5 秒以上,很不耐煩。後來試了 sbt 的 console mode 來 run testing cases。因為 sbt 會讓 scala compiler hold 住,讓它不用每次 test 都要 startup 一遍,大概 1 秒左右,非常不錯。

sbt project 描述檔

sbtscalatest 的官網建議,把下面這份文件,算是 sbt 對你目的資料夾的 project 設定檔。他會自動幫你 maintain dependency 的檔案,不用手動下載,就只是標出檔案名稱跟版號,他會幫你從 maven repository 下載安裝。

build.sbt , 存在你的 code 資料夾目錄
lazy val root = (project in file(".")).
  settings(
    name := "YourProjectName", // 你個人的 project 名字
    version := "1.0",          // 你個人的 project 版號
    scalaVersion := "2.11.4"   // 目前使用的 scala 版號(重要)
                               // 他會自動診斷與 dependency package 的相依性
  )

// 指名 scalatest 的 id 跟 版號,就會自動幫你下載
libraryDependencies += "org.scalatest" % "scalatest_2.11" % "2.2.1" % "test"

檔案擺放位置

sbt 比較講究一點,你要將 testing files 放在專門的位置。主要原始碼則是可以放在 root 或是下面這個建議的地方。

  • Src files -> ./src/main/scala/YourScala.scala
  • Testing files: -> ./src/test/scala/YourScalaTest.scala

Usage

可以直接打 sbt test ,但是一樣會有 scala startup 很慢的缺點,可以試著進入到 sbt 的 console,在 console 上,反覆地執行 test command。

vi build.sbt
vi ./src/main/scala/YourScala.scala
vi ./src/test/scala/YourScalaTest.scala
sbt
進到 sbt
> test 
// 顯示 test 結果
// 在別的 screen/tab 寫 Code / 寫測試。 不要離開 console。
> test
// 顯示 test 結果
// 在別的 screen/tab 寫 Code / 寫測試。
> test

Link

Download

ubuntuapt-get 找不到 Scala 2.11.4? 找不到 sbt ? 可以直接抓 deb 來安裝。

install
sudo dpkg -i scala-2.11.4.dbg
sudo dpkg -i sbt-0.13.7.dbg
comments powered by Disqus