Playframework1.2上でGroovy/Spockによるテストを行いたいのだが... #play_ja

ベースになるコンセプトとしては『Playframework1.2に関わるテストコード記述の部分を、Groovy/G*環境で書きたい』になるのですが。

  1. Playframework1.2上で実行出来る『単体テスト』にあたる部分を、Java→Groovyで置き換えて(テスト機構上で)動かしたい
  2. Playframework1.2にSpockを組み込み、BDD周りのテストコードを(テスト機構上で)動かしたい
  3. JUnit with Groovy, Spock共にJenkinsから自動実行、レポート出力まで行う
  4. 動作環境
    • Playframework1.2.5
    • JDK7
    • Groovy1.8.x
    • Spock1.x

今現在、軽〜く試してみた程度なのですが、状況としてはこんな感じです。

  • プロジェクト上で動かす分にはGroovyもSpockも大丈夫なはず
    • でもやりたいのはPlayframeworkでのテスト機構上で動かす事
  • Play1.2.5プロジェクト作成→Eclipseに取り込み
  • Eclipse Groovy Plugin導入
  • Eclipse上でテストコード作成、実行(extends play.test.UnitTest)→エラー
import static org.hamcrest.CoreMatchers.is;
import org.junit.Test;
import play.test.UnitTest;

class GroovyTest extends UnitTest {
	@Test
	public void testGroovy() {
		assertThat(3 + 7,is(10));
	}
}
java.lang.NullPointerException
	at org.junit.runners.model.TestClass.isANonStaticInnerClass(TestClass.java:157)
	at org.junit.runners.BlockJUnit4ClassRunner.validateNoNonStaticInnerClass(BlockJUnit4ClassRunner.java:107)
	at org.junit.runners.BlockJUnit4ClassRunner.collectInitializationErrors(BlockJUnit4ClassRunner.java:100)
	at org.junit.runners.ParentRunner.validate(ParentRunner.java:344)
	at org.junit.runners.ParentRunner.<init>(ParentRunner.java:74)
	at org.junit.runners.BlockJUnit4ClassRunner.<init>(BlockJUnit4ClassRunner.java:55)
	at org.junit.runners.JUnit4.<init>(JUnit4.java:20)
	at play.test.PlayJUnitRunner.<init>(PlayJUnitRunner.java:39)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
	at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:31)
	at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:24)
	at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57)
	at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:29)
	at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57)
	at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:24)
	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.<init>(JUnit4TestReference.java:33)
	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestClassReference.<init>(JUnit4TestClassReference.java:25)
	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:48)
	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:38)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:452)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
    • この部分、テストクラスに【play.test.UnitTestクラス】を拡張させていて、Groovyクラスから単純にUnitTestクラスを拡張させただけでは動かない
    • この辺解決すればGroovyでも行けるのかな?でもどうやって...(現在ココ)

出来るもんなのかしら?以下に挙げた実現度のうち、勿論高い方が良いのだけれど…。必要最低限の対応で出来る事が望ましいけれど、手段・解決方法によってはその辺応相談な感じで。

JUnit4 with Java
(Playframework
テスト機構組込済)
JUnit4 with GroovySpock備考
1.○(利用可能)○(実現可能)○(実現可能)Playframework1.2の機構上で
Java/Groovy/Spock
全て問題無く動かせる
2.○(利用可能)○(実現可能)×(実現不可)JUnit with Groovyについては対応可能に
3.○(利用可能)×(実現不可)○(実現可能)Spockについては対応可能に
4.○(利用可能)×(実現不可)×(実現不可)Playframework1.2のテスト機構を素直にそのまま使う
(=今回の件は諦める...(つд`))


流れとしては、以下のエントリでかじ(TwitterID:@kaji_3)さんがやっている事に近いかな。@kaji_3さんも同様にPlayframework/Spockに関する部分は未検証のようです。


また、Playframeworkで提供しているモジュールの中に、Spockに関するものがあるにはあるが…これどうやって組み込むんだ?(他のと比較してみても)そもそもこれリリースされてるのかな?


つーか、Playframeworkのテストに関するドキュメントって公式の他にはそんなに無いもんなのかしら?ちょっとこの辺も調べてみたい。


個人的に興味深い切り口の当エントリですが、実現可能性がまだ見えてこないので以下2点に関する深堀りはひとまずは別々に進めて行くのが良さげなのかな〜。

  • Playframeworkにおけるテスト(Java)
  • JUnit with Groovy, Spock(Groovy, G*)


このエントリをご覧になった方で『出来るよ/出来ないよ』『こうすれば出来るよ』と言った情報を教えて頂けると非常に助かります&とても嬉しいです。

今日のつぶやき 2012/12/03

  • ゆるふわとはそういう事だったのか>RT posted at 23:45:59
  • RT @irof: @Posaune きょんさんゆるふわだよ!真綿で絞めてくる感じで! posted at 23:45:21
  • ダルの嫁→サエコ?えっ?となったけど離婚してるしそもそもその人じゃ無かった件>RT posted at 23:43:26
  • RT @takigawa401: ダルの嫁、美人やな・・・。【ファミ通.com】『シュタインズ・ゲート』新作小説第2巻『STEINS;GATE 永劫回帰のパンドラ』に登場する阿万音由季のイラストが公開 http://t.co/rmayD2on posted at 23:41:55
  • @natsu_nanana ただいまなさいませ、徳利様。 posted at 23:30:46
  • まぁどう考えても党の意に反する結果にしか成らなさそうだもんな。 posted at 23:30:15
  • 閉鎖www / ネットでプレ総選挙!あなたの意見を表明してください。|未来の党 http://t.co/ThfZ1mtn posted at 23:28:36
  • 帰宅 posted at 23:21:50
  • 生命保険の年末控除?のやつまだ来ないんだがいつもこの時期既に来てたような気がするんだが...遅い? posted at 23:21:16
  • @irof あ〜、14、15章Gradleで行けるとアツいかもw ただテストコード写経とは若干趣が異なるから勉強会としての開催はどうかな...。 posted at 23:19:00
  • @irof Eclipseと連携ってよりも(カバー出来るに越した事は無いですが)、その後の過程でJenkins等と連携出来るような形が出来るとベターなのかなぁと言う気がしてます。 posted at 22:59:55
  • @mike_neck そうなんですか? posted at 22:47:26
  • そうするとまずGradleを一から学ばないと行かんなぁ posted at 22:44:40
  • @irof その方向で出来れば。(出来るのか?) posted at 21:59:15
  • こんな勉強会に参加してました:(001) 2010/10/21(木) Flex 4 Spark フレームワーク勉強会(Flex勉強会第124回@東京)に参加してきた http://t.co/l8dU7RL8 posted at 21:58:04
  • 14章コードカバレッジ、15章継続的テストの内容はイベントとしてはどうしよう...割と手間掛かりそうだしここは割愛すっかな〜。Mavenあんまアレだし(それならGradleで進める方向で行きたい) posted at 21:54:28
  • playframework 1.2上でテストコードgroovy/spock、更にそれらをplayのテスト機構でまとめて実施...とかやってみたかったが...。ひとまず別個でそれぞれ動かす方法で探るか。 posted at 21:40:13
  • う〜む、playframework 1.2Javaのテスト機構から、GroovyやSpockのテストケース実行させる事は出来ないのかな〜?何か小細工施せば行けるのかな。 posted at 21:30:46
  • 飯食ったら眠気が割と襲ってきたので帰ろう(付近の喫茶店でお勉強してた) posted at 21:22:41
  • @backpaper0 なるほど、Diffでしたか…。ありがとうございます! posted at 21:20:26
  • @backpaper0 はい。皆さん(4.7以降)4.10なり4.11の新機能や変更内容をどこで把握されてるのかな〜と思って... posted at 20:51:57
  • リセット繰り返してるという愉快なホームページはこれか。 / ネットでプレ総選挙!あなたの意見を表明してください。|未来の党 http://t.co/ThfZ1mtn posted at 20:37:15
  • RT @frnk: 「うつ」って何だろう、たしかに草むらにボールが落ちたのは鬱だけど…と思ったら「ラフ」か!!!気づくのに半日かかった^_^; http://t.co/GkK3aRyV posted at 20:33:12
  • @backpaper0 ちょっww (ところで、JUnit4.11であったりそれ以前(4.6まで)の変更履歴ってどこで追ってるんでしょうか?zip同梱されているREADME見ても4.6止まりのようですし...) posted at 20:27:15
  • あった。JUnit 4.11-beta-1でオレオレMatcherがもっと素敵に - 裏紙 http://t.co/Ya1S0vWa RT @shinyaa31: あ、国内(日本語)の、という注釈付きです。 RT @shinyaa31: JUnit4.11に言及しているエントリ、 posted at 20:18:39
  • 鼻メガネの原田さん、に空目して、んなまさか?と一瞬狼狽えた... >RT posted at 20:16:09
  • RT @miholovesq: #scrumdo 色メガネの @haradakiro http://t.co/wawWR03J posted at 20:15:12
  • あ、国内(日本語)の、という注釈付きです。 RT @shinyaa31: JUnit4.11に言及しているエントリ、もしやいろふさんのしかない? posted at 20:14:41
  • RT @modal_soul: 嫁がノロで倒れました。嫁曰く、ノロ接触感染らしいので同じように看病されるかたは手を良く洗いましょう。アルコールでもダメだそうです posted at 20:12:23
  • JUnit4.11に言及しているエントリ、もしやいろふさんのしかない? posted at 20:12:02
  • 閉店(ガラガラ posted at 19:42:55
  • RT @haradakiro: アジャイル開発で何が好きって、ギリギリまで設計の改善をおおっぴらに進められること。いったん実装したら変更不能なものを事前に決めることを設計と呼ぶ人が多いのかな? posted at 19:05:47
  • こんな勉強会に参加してました:(122) 2012/08/16(木) 考える大人になるためのTOC for Education 国際資格認定プログラム に参加してきた #tocfe http://t.co/8Un6udfd posted at 18:58:01
  • 今年のCodeRetreatは、東京/大阪/福岡/松山でやるのか…すごいなぁ。>RT posted at 16:54:01
  • RT @haradakiro: Global Day of Code Retreat 大阪と東京はすでに満席ですが、福岡と松山は空席あります。ぜひお早めにどうぞ(ごはんの準備が大変なので…) http://t.co/5ZT4Q0q7 http://t.co/ynaTQzqe #gdcr12 posted at 16:53:18
  • TheRSpecBookは、JUnit実践入門でBDDのところやる際(やる前)に併せて読みたいところなんだよな… posted at 16:06:12
  • RT @sue445: @irof 丁度今読んでるところですが、RSpec本というよりはBDD本に近いですかねぇ posted at 16:05:09
  • RT @irof: TheRSpecBookのRubyistの評価を聞きたい。(少し古いってのは聞いた) posted at 16:05:07
  • こんな勉強会に参加してました:(127) 2012/09/04(火) Yokohama.groovy #3 を開催してきた #yokohamagroovy http://t.co/JyyK2vtc posted at 15:57:59
  • 第2回を開催してもないのにアレだが、第3回の開催をどうしようか思案中... posted at 15:44:01
  • RT @zephiransas: JUnit実践入門の読書会を、大都会でやってもいいかもね posted at 15:37:59
  • RT @thorikiri: [aws][java]JavaAmazon S3からファイルをダウンロードする http://t.co/mD1hR6K3 posted at 15:33:35
  • @irof むしろTDDBC大阪サテライト(JUnit実践入門写経実践会in横浜)? posted at 14:21:06
  • RT @irof: JUnit実践入門写経実践会in横浜サテライト(TDDBC大阪) posted at 14:20:18
  • 確認したら16人(HangerFlight, 懇親会も1個換算)。16日から書き始めて31日の市谷さんで毎日1個ずつで行ける。(まぁ両日フル参戦出来ればの話だけど) / DevLOVE Conference 2012 - DevLOVE http://t.co/gjG4R2jN posted at 14:17:09
  • RT @takigawa401: 株式会社アプレッソCTO小野 和俊氏インタビュー。自分戦略で悩んでいる人向け。【フォスターキャリア】挑戦するエンジニアたちヒストリー http://t.co/XG1xPWnp posted at 14:10:13
  • @crea_memo 日付見たけどその日は用事が...きっと誰かがカバーしてくれるはず...っ!|ω-)ω-) posted at 13:51:58
  • RT @t_wada: O'Reilly は社名からしSQL インジェクション対策の重要性を啓蒙している。技術系出版社の鑑であるといえよう。 posted at 13:47:15
  • RT @hatebu: ちょっとこの辺でHTML5のタグを全部確認してみようぜ!! - WEBCRE8.jp (64 users) http://t.co/KBfbD8KI posted at 13:46:38
  • RT @coffeenomi: ケーダブ「今回の選挙で一番おかしいと思うのは、福島の今後についての計画を表明している党がどこも無い点。原発をどうするかより、まずは福島をどうするかを全ての党に表明してほしい。」(続く)( #opkodomotachi live at http://t.co/28TCjeNK ) posted at 13:46:30
  • 勉強会のレポート相互に補完し合う(参加出来ないのを)サービスとかあれば便利かなと思ったけど別にそうでも無いか... posted at 13:45:55
  • RT @crea_memo: 行きたい!けど、この日は無理ぽいので誰か.../MobiRuby 勉強会 : ATND http://t.co/ZvvrWknO via @atnd posted at 13:44:25
  • DevLOVE2012のレポート、どうやって書こうかなぁ。2日間で出て15人?とかだっけ。毎日一人分書いていって年末まで続けるかな。さすがに土日(+月)ではボリューム的に厳しそうだし。 posted at 13:43:51
  • RT @hetaheta22: 日本人女性6500人が韓国で行方不明になってる現実は知らないくせに、K-POPの振り付けは覚えて、脳に穴を開ける寄生虫の卵が入った韓国産のキムチで死人がでている現実を知らずに新大久保まで食べに行き、衛生環境なども知らないまま、「美容大国だから」って理由だけで安い美容マスクを買う。 posted at 13:38:21
  • こんな勉強会に参加してました:(078) 2012/01/27(金) エンジニアサポート新年会2012 CROSSに参加してきた #cross2012 http://t.co/1Iz7NupC posted at 12:57:56
  • @irof #junitbook 横浜第2回は来年1月に実施予定です。一応ご連絡をw posted at 12:33:45
  • @grimrose @naopi @sue445 @PoohSunny @y_sumida @touchez_du_bois @skowata 先日はありがとうございました。次回第2回について皆様のご意見をお聞きしたく、1通Dしました。ご確認お願い致します。 posted at 12:32:02
  • RT @setoazusa: 「いろふさんひどい。」 / “世界はいろふである #irof_history - 水まんじゅう” http://t.co/TqPRX1Sg posted at 12:23:08
  • RT @aeg: @y_sumida いいですね〜。関内ならのぞきにいけばよかったな〜^^ posted at 11:18:26
  • @natsu_nanana ・゚・(ノД`)・゚・。 ウワァン、トックリサマー (釗3[▓▓▓] チーン posted at 10:11:23
  • 書き出しが『ミモー』かよと思いましたがすいません私もそれが真っ先に出ました。 / ちはる 14歳年下男性と再婚「ちょいと若いですが良いヒトです」(スポニチアネックス) - Y!ニュース http://t.co/7jBubEdl posted at 10:08:14
  • こんな勉強会に参加してました:(128) 2012/09/12(水) DevLOVE『学び方を学ぶ 〜オブジェクト指向の設計と実装を学ぶ〜』に参加してきた #devlove http://t.co/LPAjs8Iy posted at 09:57:53
  • RT @Sean_SF: 「Bitbucketの一番の魅力といえば無料でprivate repositoryを作れるところですね。(Githubだと最低でも月7ドル)」 / “BitbucketとGithubをゆるく比較 #augj - くりにっき” http://t.co/oNW9FpQt posted at 09:56:18
  • RT @astah_ja: JIRAのissueを astahのマインドマップへインポートできるプラグイン「JIRA Mindmap planner for astah」の修正バージョンをリリースしました。 http://t.co/WwXgszjS posted at 09:36:11
  • 実際にアジャイルでガンガン回しているプロジェクトでは、どういう『設計』で進めているものなのかを是非聞かせてもらいたいものです。 posted at 09:35:41
  • (釗3[▓▓▓] .oO(通勤中ですよん) RT @natsu_nanana: @shinyaa31 おはようございましたー。まだ布団の中かな? posted at 09:20:02
  • RT @zim2: 明日はキン肉マン41巻の発売日ですぞ posted at 09:10:55
  • 今日はいつにも増して寒いっすね... posted at 08:39:38
  • RT @k_0kamoto: IT = Irof Technology か。。 posted at 08:38:32
  • RT @suginoy: “ITの地殻変動はどこで起きているのか?〜アジャイルへの流れと設計技法の違和感: プログラマの思索” http://t.co/Ht6lwJAZ posted at 08:33:41
  • @orange_clover おはようございます〜。 posted at 08:13:40
  • (釗3[▓▓▓] #mkr おはようございます! posted at 08:11:28
  • [雑記][Twitter]今日のつぶやき 2012/12/02: RT @mytk: オフショア先のスタッフにメールを書いていたが、許さん許さんと呼びかけていたらなんかすごい失礼なメールみたいで書きながら苦笑。 posted... http://t.co/GUCPlKW2 posted at 08:02:03
  • [雑記][Twitter]今日のつぶやき 2012/12/01: #junitbook RT @shuji_w6e: 結論は、 #なごやこわい #うさみみこわい ってことか posted at 22:54:29 RT @sh... http://t.co/iLvl3Vxc posted at 08:02:02
  • [雑記][Twitter]今日のつぶやき 2012/11/30: 背景白で黒い線で書かれている丸みを帯びたアイコンが全て(一瞬)いろふさんに空目してしまって困る posted at 23:42:54 @natsu_nanan... http://t.co/VgDETyeB posted at 08:02:02
  • [雑記][Twitter]今日のつぶやき 2012/11/29: @ayato_p さん(バージョン2) を図鑑に追加しました&純度ランキング上昇しました! / いろふ図鑑 #irof_history - Togetter ... http://t.co/rr3N8fhP posted at 08:02:02
  • [雑記][Twitter]今日のつぶやき 2012/11/28: 図鑑見て気付いたけど、いろふ族の人結構な割合でしろめだ(しろめ posted at 23:53:10 いろふさんのgithubにコミットしてある過去の画像も図... http://t.co/fnGHhVwj posted at 08:02:01
  • 横浜第1回目レポート(5) / #junitbook [勉強会]JUnit実践入門読書会@横浜 2012-12-01 - そういうふうに生きている inはてな http://t.co/sES0aTg2 posted at 07:21:55
  • RT @backpaper0: @irof Great Ultra Irof posted at 06:59:03
  • こんな勉強会に参加してました:(022) 2011/06/04(土) 第4回WebUX研究会に参加してきた http://t.co/AR3FyfcM posted at 06:57:50
  • RT @grimrose: 書きました。 #tddbc / スタッフになってみませんか? #TddAdventJp http://t.co/vuYvzKMy posted at 06:53:35
  • RT @hatena_groovy: Arquillianでインテグレーションテスト最初の第一歩 http://t.co/tj7giocQ posted at 06:44:05
  • こんな勉強会に参加してました:(126) 2012/09/01(土) TDD Boot Camp 横浜 Second Seasonにスタッフとして参加してきた #tddbc http://t.co/kVMagm1o posted at 03:57:47
  • こんな勉強会に参加してました:(037) 2011/08/03(水) アジャイルサムライ読書会(湯島道場) 第二回 水の巻に参加してきた #agilesamurai #湯島道場 http://t.co/9rd67yQ8 posted at 00:57:44