Upgrade to Pro — share decks privately, control downloads, hide ads and more …

JavaのテストGroovyでいいのではないかという話

disc99
September 11, 2016

 JavaのテストGroovyでいいのではないかという話

disc99

September 11, 2016
Tweet

More Decks by disc99

Other Decks in Technology

Transcript

  1. もくじ • 背景 • はじめに • テストに求められること • Java ×

    JUnitのテスト • Groovy × Spockのテスト • Groovyの活用 • まとめ
  2. テストに求められること (現実) • 仕様、処理の明確化 • 複雑なセットアップ、大量のモック化、読み取れない処理内容 • 安全なコード修正、バグの検知 • テスト成功させるためだけのその場限りの修正

    • 開発スピードの向上 • 工数軽減のためにテスト自体を後回し • 開発者の安心感 • 不足したテスト、信頼性の低下による拭い去れない不安
  3. Blocks • ラベルによってブロック を分割 • xUnit Test Patternsの "Four Phase

    Test"をフ レームワークとして強制 &宣言的に記述 • 従わない場合エラー
  4. Others • Exception Test • Data Pipe • Mock •

    Spy • Stub • @ExtensionAnnotation • 詳しくは • http://spock-framework-reference-documentation- ja.readthedocs.io/ja/latest/index.html • http://spockframework.github.io/spock/docs/1.0/
  5. その他Groovy活用 • Geb • Groovyの機能を活用したSeleniumラッパー • Selenumも推奨するPageObjectパターンを利用したメンテナンス性の高いテスト、 JQueryライクなインターフェイス、Spock連携 • Gradle

    • Spring、Hibernate、Androidなどにも標準採用されているビルドツール • Mavenのようなライフサイクル管理、依存性解決、Groovyのシンプルなシンタックス、 DSLを利用した可読性、柔軟なビルドスクリプト • IntelliJ IDEA • 標準でGroovyをサポートしているIDE。プラグインなどの追加不要でGroovyを記述可能
  6. ただGroovyってどうなの? • 最近流行りのJVM言語ではない? • モダンな動的言語、テスト用途としては十分な機能 • 破壊的変更がある他のJVM言語とは違い、ほとんどのJava構文が使え る • 将来性は?

    • 少なくともこの先数年は現役で使える(個人的印象) • 廃れたとしても、削減した時間で十分もとは取れる • それでも不安なら、Groovyの独自記法は避けJavaらしい記法によせる
  7. テストに求められること (Groovy×Spock適用後) • 仕様、処理の明確化 → 複雑なセットアップ、多数のモック化、読み取れない処理内 容 • Groovyのシンプルなシンタックスによりテスト内容に集中可能 •

    安全なコード修正、バグの検知 → その場限り、テスト成功させるためだけの修正 • PowerAssertによる失敗内容の明確化 • 開発スピードの向上 → 工数軽減のために後回し • 軽量化した記述量、可読性向上によって短時間でテスト記述が可能 • 開発者の安心感 → 不足したテストによる消し去れない不安 • whereブロックによるパラメータ化テストなど多くのケースを簡単に網羅可能