初めてIntelliJに触れる人へ − プロジェクトの設定とかテスト実行の話

IntelliJ CEを使ってみようって人のほとんどがScala使ってみたい(当社比)ようなので,Scalaを例にするよ。念のため,IntelliJ CEは IC-90.96,Scalaプラグインは 0.3.32 を前提にしとく。
どうでもいいけど,Groovyについては,ここに良い解説があるので,参考にしてね。
Simple Groovy Project in IntelliJ IDEA Community Edition - Messages from mrhaki


そうそう,お題は「ScalaプロジェクトでSpecsを動かすまで」としときま。

プロジェクトの作り方

File -> New Project... かダッシュボードにある "Create New Project" でプロジェクト作成ウィザードが立ち上がる。選ぶべきは,"Create project from scratch" -> "Java Module" ... 4枚目で下図のようなウィザードが出る。


ここでScalaを選んで,右側のペインで諸条件を設定する。Scalaのライブラリが見つからないと,勝手にダウンロードしてくるし,すでにローカルディスクにScalaコンパイラがあるなら,"Pick files from disk..."で指定してあげるといい。
右下にある "The following library will be created" の Level で "global libary" を選ぶと,次回からは "Use Libraries..." から選択できるようになるよ。


デフォの"Download missing files to:", "project library"のままプロジェクトを作ると,(↓)こんな具合にlibディレクトリにScalaコンパイラがダウンロードされてる(ついでにライブラリの設定も終わってる)。

プロジェクトの設定変更

この手の設定はIDEごとのクセがでるので,気がつかないと無駄に時間を食う。IntelliJの場合,ライブラリやパスの設定なんかは,"Project Structure"ってところで設定する。


IntelliJのプロジェクトの構成については,以下のリンクを読んどいて。
Migrate - Help | IntelliJ IDEA
http://www.jetbrains.com/idea/documentation/migration_from_netbeans_faq.html#Whats_the_difference_between_projects_and_modules


プロジェクト -> モジュール -> ファセット って言葉を覚えて,パスや依存ライブラリの設定は,モジュールで行うって覚えればおk。
今回作るのはSpecsのテストコードなので,モジュールにテストコードのソースパスを設定する。Project Structureの Module 'module-name' -> Sources でテキトウなディレクトリを作る("test"とか)。
#別にディレクトリ作るだけなら,必ずしもProject Structureで行うことはないス。


テストコードのソースパスに指定したいディレクトリを選択して,下図のように "Test Sources" ボタンを押すと,そのディレクトリがテストコードのソースパスになる(プロダクトコードは,"Sources")。


見ての通り,ソースパスは複数指定できるので,お好みの応じていくらでも。
ついで言うと,"Excluded"は,IntelliJの管理外にするディレクトリを指定します。NetBeansに負けず劣らずIntelliJのプロジェクトスキャンも半端なく時間がかかるので,IntelliJにインデクシングされたくないディレクトリは,Excluded指定しとくってのは豆な。


続いて依存ライブラリの設定。これは Dependenciesタブ で行う。右端にある Addボタンを押すと図のようなメニューが出るので,お好きな方法を選ぶ...って,普通は Module Library を選ぶかな。


ライブラリの設定ダイアログは,見りゃなにするかはすぐわかると思う。面白い(?)のが,Attach Jar Directoriesってので,そこで指定したディレクトリにあるJarファイルが全部,依存ライブラリとして追加される。Jarファイル追加するたびに,依存ライブラリの設定しなくて済むんで重宝してる。


spaces-1.6.0.jarだけあれば十分なんだけど,(↑)図では,わざと ./lib/specs ってディレクトリを指定しとく。その理由は,あとでライブラリ追加するからよ。:-)


IDEA9からMavenみたくライブラリのスコープが設定できるようになったよ。


これでプロジェクトの設定はおしまい。たぶん,こんな感じになってる。


(おまけ)ソースパスからビルドパスにコピーするリソースのパターンだとか,コンパイラのオプションだとかは,Settings -> Project Settings -> Compiler で行うといいよっ。
#例えば,下図の"Resource patterns"にソースパスからコピーしたいリソースを指定する。

テストの実行

その前にテストコード作っておいてね。たとえば,こんなやつ。


テストの実行方法はさまざまだけど,手っ取り早く「指定したテストコードのソースパス以下のすべてのテスト」を実行させてみる。やり方は,テストコードのソースパスをマウスで選んで,コンテキストメニュー -> Run "All Tests" を選ぶだけ。


テストの場合,JUnit, TestNG, ScalaTestなど,いくつかバリエーションがあるので,どのコンフィグレーションで実行すんの?って聞いてくるから,今回は Specs を選ぶ。
#specsファイルにJUnitランナーを仕込まなくてもテストできるってのはスゴイ事ですよ。


そすっと,こんな感じに実行される。やりましたね。


ちなみに,Run/Debugなにがしってのは,わりとどこでも出てくるので,気になるところをポイントしてコンテキストメニューを出してみよう。JUnitだったら,テストクラスやテストメソッドでも反応するよっ。

Run/Debug Configurationsについて

って,同じのEclipseにもあったな。じゃあ,細かい説明要らないね(NetBeansに無いの知っているけど,あえてスルー)。
Configurationsの設定は,ここから。

おまけ

spcesが必要とするすべてのライブラリを放り込むと,こんな具合にLiterateSpecificationsも動いてくれます。


やりました。ぼくにもできましたよ。


ps.
IntelliJScalaプラグインは,まだimplicit conversionを解釈してくれないので,specsファイルの編集はあんまり便利って感じしないのはナイショだ。:-P