LoginSignup
17
16

More than 5 years have passed since last update.

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

Last updated at Posted at 2013-11-05

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
16