Edited at

Playframework2.2.0 + Scala2.10 + Scala IDE 3.0.2 (eclipse) でScalaTestまで

More than 5 years have passed since last update.

最近、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"
}
}