最近、Scala+Playframework を使ってます。(業務はPHP or Javaですが) Scala自体、Javaの経験があれば取っ付きやすそうなのと関数型言語、型推論というキーワードに 惹かれて初めて見ました。 で、とりあえず開発を進めるにあたってテストコードを書けなければと思い、 情報をまとめてみました。
#Playframework
特に迷うことはありません。
公式サイトから最新のパッケージをダウンロード
公式サイト:http://www.playframework-ja.org/
※2013/11/2 時点では 2.2.0が最新
で、チュートリアルとおりソースの展開、起動確認
Tips:Playframeworkのソースも参照したい場合は、playコンソール上で
eclipse with-source=true もやると一緒に取り込まれます。
#Scala IDE (Eclipse) + Scala2.10
公式サイト:http://scala-ide.org/
これも迷うことはありません。
公式サイトから最新のパッケージをダウンロード
※Scalaも同梱されるので意識する必要はありません。
※Java6 or 7 どちらも利用可能なので、環境に応じてお好みで使い分ければOKです。
Tips:Javaも使いたい方は、デフォルトだとJavaのコード保管が無効になっているので、
環境設定->Java->Editor->Content Assistant->Advancedで
Javaを有効にする必要があります。
最後、
#ScalaTest
このあたりが一番迷ったところですが、Playframeworkではデフォルトで
Spec2がテストフレームワークとして採用されています。
色々調べた結果ではありますが、基本的にはScalaTestが一番多様な使い方が
出来る様なので、私はこれを使ことにしました。
参考にしたページ
ScalaTest(公式):http://www.scalatest.org/user_guide/selecting_a_style
http://seratch.hatenablog.jp/entry/20110807/1312726957
導入方法ですが、以下のURL通りで問題ないです。
http://www.scalatest.org/download#20rc3
ポイントだけ記載しておくと
###公式サイトからjarファイルをダウンロード
※ScalaTest and ScalaUtils 2.0.RC3でした。
###ダウンロードしたjarをEclipseのプロジェクトのクラスパスが通っている場所へ配置
ちなみに、私はプロジェクト内で lib フォルダを新たに作り、そこへ配置し、
ビルドパスへ通すことで対応しました。
###build.sbt へ追記
name := "sharedNewses"
version := "1.0-SNAPSHOT"
libraryDependencies ++= Seq(
jdbc,
anorm,
cache
)
// 空行を入れないとplayコマンド実行時に怒られる
libraryDependencies += "org.scalatest" % "scalatest_2.10" % "2.0.RC3" % "test"★追加
// 空行を入れないとplayコマンド実行時に怒られる
play.Project.playScalaSettings
######playframeworkではbuild.sbtでビルドの定義を行っています。
######一応、playコンソール上で、clean , compile , eclipse で再定義をし直した方が無難です。
最後、サンプルコード
公式に良いサンプルはありますが、とりあえずScalaTestのFunSuite
を使ったテストコードを記載しておきます。
※Eclipseのテストコード上で右クリック->DebugConfigrationを選択するとScalaTestが出てくるはずです。
それを使ってテスト実行できます。
(出てこない場合はEclipseでScalaTestPluginをインストールする必要があります。が、同梱されていたと思います。。。)
import org.scalatest.FunSuite
class WebSiteTest extends FunSuite {
test("webSite.echo shoud have echo") {
var webSite = new WebSite
assert(webSite.echo == "test")
}
}
package models
class WebSite {
def echo: String = {
"test"
}
}