ええ、私は会社にいましたよ…
http://togetter.com/li/283845 とか見て、とても楽しそうで羨ましい…って指咥えて仕事してました。
まあ指咥えてってのは嘘ですし、仕事し…
というわけで私も唐突にScala触ってみました。
その時のメモ
私の環境
Mac OSX 10.7.3
Eclipse 3.7.2
Scala IDE for Eclipse 2.0.0
sbt 0.11.2
まあ殆どこちらのブログ参考にしたんですけどね
http://blog.weblade.in/archives/1905
まずはEclipseを用意します
http://www.eclipse.org/downloads/
次にScala IDE for Eclipse というプラグインを入れます
http://scala-ide.org/
一応 For 2.9.x の安定版のリンクを選びました
続いてEclipse.iniを編集します。
http://www.assembla.com/wiki/show/scala-ide/Setup とか参考にして適当に
とりあえずヒープサイズだけでっかくしておけばいいと思います。たぶん。
Macの場合
Eclipse.app/Contents/MacOS/eclipse.iniのはず
sbt(simple build tool)入れます。
homebrewで入れました
$ brew install sbt多分今なら0.11.2が入ります
brewでインストールしたsbtを見ると
#!/bin/sh # /usr/local/Cellar/sbt/0.11.2/bin/sbt test -f ~/.sbtconfig && . ~/.sbtconfig exec java -Xmx512M ${SBT_OPTS} -jar /usr/local/Cellar/sbt/0.11.2/libexec/sbt-launch.jar "$@"とあるので
https://gist.github.com/1139288 を参考にSBT_OPTSを環境変数にでも追加すればいい気がします
export SBT_OPTS="-Dfile.encoding=UTF8 -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256m"特にエンコードは指定しておかないと、macのターミナルでsbt testとか実行した時に日本語表示が化けて悲しい事になりました。
さてここまでやったらあとはbuild.sbtを作成するのですが、eclipseプロジェクトを作っては消し…ってのを結構やるので
とりあえず最低限のプロジェクトが作れるようなshスクリプトでも作ってみました。
本当にいいのかどうかは正直sbtどころかmavenだってマトモに使ったことないのでさっぱりですけど。
内容は件名のようにSpecs2が使えればいいんじゃね?的な最低限のやつです。
※なおgiter8という素晴らしいものがあります。自分でスクリプト書いている場合じゃねえぜ!
上記スクリプト(hogeと仮定)をテキトーに保存して実行権限与えたとしてあとは
$ cd てきとーな場所 $ hoge hello-scala
とかやれば、eclipseのプロジェクトがhello-scala というディレクトリの下に作られます。
追加したいライブラリ等があるのなら、hello-scala/build.sbt の libraryDependencies に追加した後 hello-scala直下で
$ sbt reload update eclipse
でOK
出来上がったプロジェクトをEclipseでImportします。
するとこんな感じ?
さて、肝心のSpecs2ですが選定した理由は、「会社でRailsだしRspecだしなんとなく…」というだけです。
あとで見たらScalaTestでもSpec的なやつあったしw
これでなければならないということもなければ、むしろ組み合わせて使うことも可能なようです。
http://etorreborre.github.com/specs2/guide/org.specs2.guide.SpecStructure.html#ScalaCheck+values
Eclipse上で実行するときの注意点は以下のように対象クラスにJUnitRunnerを付け忘れないことだけみたいです。
http://scala-ide.org/docs/user/testingframeworks.html
import org.specs2.mutable._ import org.specs2.runner.JUnitRunner // 忘れないこと import org.junit.runner.RunWith // 忘れないこと @RunWith(classOf[JUnitRunner]) // 忘れないこと class HelloSpecs2 extends Specification {
あとはフツーに走らせてやれば動きます。
もちろん sbt test で動かしてもテストは動きます。素晴らしい。(当たり前か)
おまけ
build.sbtに以下記述を追加するとSpecs実行結果がJUnit形式のxmlが出力されます
http://etorreborre.github.com/specs2/guide/org.specs2.guide.Runners.html#Simple+build+tool
testOptions in Test += Tests.Argument("junitxml") // 贅沢にも全部出すのなら testOptions in Test += Tests.Argument("junitxml", "html", "console")
出力先はxmlは target/test-reports 以下に
htmlは target/specs2-reports 以下 のようです。
なおhtml出力の場合は
"org.pegdown" % "pegdown" % "1.0.2"
みたいな感じでpegdownというものを依存関係に足さないと怒られます。
xmlを出力すればJenkinsさんとかもウマウマできますし便利ですね。
scala ide で設定できるformatterはscalariformというのを使っているようです。
http://mdr.github.com/scalariform/
で、sbtscalariform なんてものがあります。
https://github.com/typesafehub/sbtscalariform
入れるとコンパイル時にフォーマットしてくれるっぽいですね。素敵。
Eclipseを使わなくてもフォーマットはみんな統一できる、というかビルドサーバ(が、あればだけど)が勝手に整形してくれる
みたいなことができるんですよね、きっと。
さて、あとは使う人間のscala力を高めればいいのかな(白目
0 件のコメント:
コメントを投稿