Play!のJava向けO/RマッパーであるEbeanはコンパイルに介入するタイプのフレームワークです。
具体的には、Ebeanモデルがコンパイルされたあとに、getter/setterを勝手に作成して埋め込んでくれます。これが、単にpublicフィールドを書いただけで遅延アクセスをやってくれる仕組み。
ところが、IntelliJやEclipseのJUnitプラグインはそこら辺の事情を知らないので、テスト実行時に自力でコンパイルし、ただのJavaオブジェクトにしてしまいます。そしてこける。
"It has not been enhanced"
というランタイム例外が飛びます。enhanceってのがそのgetter/setter生成動作のことですね。
JUnit実行のたびにplay cleanしてplay compileしなおすとかたるくてやっていられないのでJUnitプラグインに正しいEbeanの扱い方を教えてあげましょう。
ネタ元はこちら
1. プラグインを使う
http://plugins.jetbrains.com/plugin/?idea&id=4431
Ebean weaverをIntelliJに入れます。これで解決。
2. javaagentコンパイルオプションを指定する
JUnitプラグインの設定にコンパイルオプション設定があります。ここに
-javaagent:/フルパスで/avaje-ebeanorm-agent.jar
と設定してあげます。これでも解決。