Suche senden
Hochladen
JavaのテストGroovyでいいのではないかという話
•
5 gefällt mir
•
9,857 views
disc99_
Folgen
Javaでテストコードを書くときの話
Weniger lesen
Mehr lesen
Technologie
Melden
Teilen
Melden
Teilen
1 von 62
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
pospome
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
mosa siru
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
Ryuji Tsutsui
Apache Avro vs Protocol Buffers
Apache Avro vs Protocol Buffers
Seiya Mizuno
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
フロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjug
Itsuki Kuroda
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
Yahoo!デベロッパーネットワーク
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
NTT DATA Technology & Innovation
Empfohlen
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
pospome
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
mosa siru
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
Ryuji Tsutsui
Apache Avro vs Protocol Buffers
Apache Avro vs Protocol Buffers
Seiya Mizuno
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
フロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjug
Itsuki Kuroda
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
Yahoo!デベロッパーネットワーク
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
NTT DATA Technology & Innovation
backlogsでもCI/CDする夢を見る
backlogsでもCI/CDする夢を見る
Takeru Maehara
Redisの特徴と活用方法について
Redisの特徴と活用方法について
Yuji Otani
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
Yoshitaka Kawashima
分散システムについて語らせてくれ
分散システムについて語らせてくれ
Kumazaki Hiroki
組織にテストを書く文化を根付かせる戦略と戦術
組織にテストを書く文化を根付かせる戦略と戦術
Takuto Wada
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
NTT Communications Technology Development
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
NTT DATA Technology & Innovation
PostgreSQLでスケールアウト
PostgreSQLでスケールアウト
Masahiko Sawada
5分で解るセキュアコーディング
5分で解るセキュアコーディング
Yasuo Ohgaki
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方
Yoshiyasu SAEKI
OSS活動の活発さと評価の関係について
OSS活動の活発さと評価の関係について
Takuto Wada
まだプログラム手で書いて消耗してるの?~入出力例からプログラムを自動生成する技術~(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019...
まだプログラム手で書いて消耗してるの?~入出力例からプログラムを自動生成する技術~(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019...
NTT DATA Technology & Innovation
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
NTT DATA Technology & Innovation
テストコードの DRY と DAMP
テストコードの DRY と DAMP
Yusuke Kagata
Lean coffee
Lean coffee
Takeshi Arai
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
Yahoo!デベロッパーネットワーク
オーバーエンジニアリングって何? #devsumi #devsumiA
オーバーエンジニアリングって何? #devsumi #devsumiA
Ore Product
TDD のこころ
TDD のこころ
Takuto Wada
ChatGPTは思ったほど賢くない
ChatGPTは思ったほど賢くない
Carnot Inc.
インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方
Shohei Koyama
Xcode10での テスト周りの進化をふりかえる
Xcode10での テスト周りの進化をふりかえる
Toshiyuki Hirata
Gws in fukuoka
Gws in fukuoka
Takuma Watabiki
Weitere ähnliche Inhalte
Was ist angesagt?
backlogsでもCI/CDする夢を見る
backlogsでもCI/CDする夢を見る
Takeru Maehara
Redisの特徴と活用方法について
Redisの特徴と活用方法について
Yuji Otani
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
Yoshitaka Kawashima
分散システムについて語らせてくれ
分散システムについて語らせてくれ
Kumazaki Hiroki
組織にテストを書く文化を根付かせる戦略と戦術
組織にテストを書く文化を根付かせる戦略と戦術
Takuto Wada
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
NTT Communications Technology Development
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
NTT DATA Technology & Innovation
PostgreSQLでスケールアウト
PostgreSQLでスケールアウト
Masahiko Sawada
5分で解るセキュアコーディング
5分で解るセキュアコーディング
Yasuo Ohgaki
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方
Yoshiyasu SAEKI
OSS活動の活発さと評価の関係について
OSS活動の活発さと評価の関係について
Takuto Wada
まだプログラム手で書いて消耗してるの?~入出力例からプログラムを自動生成する技術~(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019...
まだプログラム手で書いて消耗してるの?~入出力例からプログラムを自動生成する技術~(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019...
NTT DATA Technology & Innovation
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
NTT DATA Technology & Innovation
テストコードの DRY と DAMP
テストコードの DRY と DAMP
Yusuke Kagata
Lean coffee
Lean coffee
Takeshi Arai
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
Yahoo!デベロッパーネットワーク
オーバーエンジニアリングって何? #devsumi #devsumiA
オーバーエンジニアリングって何? #devsumi #devsumiA
Ore Product
TDD のこころ
TDD のこころ
Takuto Wada
ChatGPTは思ったほど賢くない
ChatGPTは思ったほど賢くない
Carnot Inc.
インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方
Shohei Koyama
Was ist angesagt?
(20)
backlogsでもCI/CDする夢を見る
backlogsでもCI/CDする夢を見る
Redisの特徴と活用方法について
Redisの特徴と活用方法について
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
分散システムについて語らせてくれ
分散システムについて語らせてくれ
組織にテストを書く文化を根付かせる戦略と戦術
組織にテストを書く文化を根付かせる戦略と戦術
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
PostgreSQLでスケールアウト
PostgreSQLでスケールアウト
5分で解るセキュアコーディング
5分で解るセキュアコーディング
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方
OSS活動の活発さと評価の関係について
OSS活動の活発さと評価の関係について
まだプログラム手で書いて消耗してるの?~入出力例からプログラムを自動生成する技術~(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019...
まだプログラム手で書いて消耗してるの?~入出力例からプログラムを自動生成する技術~(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019...
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
テストコードの DRY と DAMP
テストコードの DRY と DAMP
Lean coffee
Lean coffee
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
オーバーエンジニアリングって何? #devsumi #devsumiA
オーバーエンジニアリングって何? #devsumi #devsumiA
TDD のこころ
TDD のこころ
ChatGPTは思ったほど賢くない
ChatGPTは思ったほど賢くない
インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方
Ähnlich wie JavaのテストGroovyでいいのではないかという話
Xcode10での テスト周りの進化をふりかえる
Xcode10での テスト周りの進化をふりかえる
Toshiyuki Hirata
Gws in fukuoka
Gws in fukuoka
Takuma Watabiki
Spock's world
Spock's world
Takuma Watabiki
JavaとScalaとGroovyと
JavaとScalaとGroovyと
irof N
20120421中国gtug
20120421中国gtug
Yusuke Sato
Groovy base
Groovy base
Akura Pi
Play jjug2012spring
Play jjug2012spring
Takafumi Ikeda
脱・独自改造! GebでWebDriverをもっとシンプルに
脱・独自改造! GebでWebDriverをもっとシンプルに
Hiroko Tamagawa
nseg第5回勉強会
nseg第5回勉強会
ko ty
PlayFramework1.x基礎編
PlayFramework1.x基礎編
Asami Abe
C# から java へのプログラム移植で体験したtddの効果は?
C# から java へのプログラム移植で体験したtddの効果は?
Shinichi Hirauchi
GCSアジャイル開発を使ったゲームの作り方
GCSアジャイル開発を使ったゲームの作り方
Hiroyuki Tanaka
第5回勉強会
第5回勉強会
Mugen Fujii
(未発表) JavaScriptテスト勉強会@福岡#0の前に考えていたこと
(未発表) JavaScriptテスト勉強会@福岡#0の前に考えていたこと
Kohki Nakashima
テストエンジニアの品格 #automatornight
テストエンジニアの品格 #automatornight
kyon mm
テスト駆動開発の導入ーペアプログラミングの学習効果ー
テスト駆動開発の導入ーペアプログラミングの学習効果ー
Shuji Watanabe
Play frameworkの概要
Play frameworkの概要
Shuhei Kaneko
Gradleどうでしょう
Gradleどうでしょう
Takuma Watabiki
xUnit Test Patterns - Chapter16
xUnit Test Patterns - Chapter16
Takuto Wada
自社開発プロダクト ALL-IN で行っている単体テストのパフォーマンスチューニングTips
自社開発プロダクト ALL-IN で行っている単体テストのパフォーマンスチューニングTips
Shou Takenaka
Ähnlich wie JavaのテストGroovyでいいのではないかという話
(20)
Xcode10での テスト周りの進化をふりかえる
Xcode10での テスト周りの進化をふりかえる
Gws in fukuoka
Gws in fukuoka
Spock's world
Spock's world
JavaとScalaとGroovyと
JavaとScalaとGroovyと
20120421中国gtug
20120421中国gtug
Groovy base
Groovy base
Play jjug2012spring
Play jjug2012spring
脱・独自改造! GebでWebDriverをもっとシンプルに
脱・独自改造! GebでWebDriverをもっとシンプルに
nseg第5回勉強会
nseg第5回勉強会
PlayFramework1.x基礎編
PlayFramework1.x基礎編
C# から java へのプログラム移植で体験したtddの効果は?
C# から java へのプログラム移植で体験したtddの効果は?
GCSアジャイル開発を使ったゲームの作り方
GCSアジャイル開発を使ったゲームの作り方
第5回勉強会
第5回勉強会
(未発表) JavaScriptテスト勉強会@福岡#0の前に考えていたこと
(未発表) JavaScriptテスト勉強会@福岡#0の前に考えていたこと
テストエンジニアの品格 #automatornight
テストエンジニアの品格 #automatornight
テスト駆動開発の導入ーペアプログラミングの学習効果ー
テスト駆動開発の導入ーペアプログラミングの学習効果ー
Play frameworkの概要
Play frameworkの概要
Gradleどうでしょう
Gradleどうでしょう
xUnit Test Patterns - Chapter16
xUnit Test Patterns - Chapter16
自社開発プロダクト ALL-IN で行っている単体テストのパフォーマンスチューニングTips
自社開発プロダクト ALL-IN で行っている単体テストのパフォーマンスチューニングTips
Kürzlich hochgeladen
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
CRI Japan, Inc.
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
CRI Japan, Inc.
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Kürzlich hochgeladen
(7)
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
JavaのテストGroovyでいいのではないかという話
1.
JavaのテストGroovy でいいのではないかと いう話 @disc99
2.
もくじ • 背景 • はじめに •
テストに求められること • Java × JUnitのテスト • Groovy × Spockのテスト • Groovyの活用 • まとめ
3.
背景 • Groovy、Spockについて • いきなり勧めてもメリットが分かりにくい •
導入するにあたって • 使い方やメリットを共有したい • 参考資料が欲しい
4.
注意点 • このスライド • テスト
= ユニットテスト、テストコード • プロダクションコードはJavaで開発を想 定
5.
はじめに
6.
テスト書いてますか?
7.
テストがどうあるべきか分か りますか?
8.
今回はもう一歩先の話
9.
テストに求められること • 仕様、処理の明確化 • 複雑な仕様も簡潔な記述で理解できる •
テスト側にバグが生まれるような複雑な構造にしない • 安全なコード修正、バグの検知 • 開発スピードの向上 • 開発者の安心感
10.
多くのケース網羅が必要なテストにおいて 簡潔な記述 複雑な構造×
11.
現実
12.
テストに求められること (現実) • 仕様、処理の明確化 • 複雑なセットアップ、大量のモック化、読み取れない処理内容 •
安全なコード修正、バグの検知 • テスト成功させるためだけのその場限りの修正 • 開発スピードの向上 • 工数軽減のためにテスト自体を後回し • 開発者の安心感 • 不足したテスト、信頼性の低下による拭い去れない不安
13.
現実は厳しい
14.
テストどうする?
15.
Java × JUnit で解決する
16.
よくあるJUnit
17.
よくあるJUnit テスト名が適当 繰り返されるsetupとassert - 途中で失敗すると実行されない -
どこまでが初期化でどこまでが ターゲット? - 全ての組み合わせがわかりくい JUnit4からはassetThatが追加 一つのテストで複数メソッド のテスト
18.
JUnitで解決
19.
JUnitで解決 適切なテスト名 @Beforeによるsetup Theoriesでパラメータ化テスト コンテキスト単位でEnclosedなども使用 テストパターンの可読性向上 assertが一つになりテスト内容が明確化
20.
JUnit 5ではより改善? • @DisplayNameでテスト名を記述 •
@Nestedのよる構造化 • ParameterResolverでパラメータ化テスト • DynamicTestによる動的テスト • Rule、TestRunnerとかは廃止 • Matcherに非依存 • Java 8以上
21.
解決\(^o^)/
22.
さらにテストが増えると…
23.
うーん…
24.
本当に解決?
25.
実際に開発は もっと複雑
26.
JUnitの問題点 • 構造化すると可読性が悪化しやすい • テストの失敗が分かりにくい •
複雑になってくると記法の一貫性確保が難しい • assertやmockなどが外部ライブラリに依存 • そもそも、Javaは基本的に冗長
27.
Groovy × Spock で解決する
28.
JavaなのにGroovy?
29.
Groovyとは • ポストJava(置き換え)ではなく、Javaの拡張 • Javaとの併用のために生まれ、併用に特化された 言語 •
モダンな言語の機能を積極的に取り込み • Rubyに似た文法で柔軟、拡張性が高い • Java VMとgroovy-all.jarだけあれば動く
30.
Hello World
31.
Hello World 違いは拡張子のみ
32.
Javaの記法は ほぼそのまま動く (ラムダ式はクロージャ)
33.
Groovyでよりシンプルに Groovyで書いた同じ処理 HTTPに限れば Javaで書いた処理
34.
JavaエンジニアにとってのGroovy • Groovyが分からなければJavaで書く • 分かればGroovyも書く •
レビューなどを通してキャッチアップ • 随時理解で十分なゆるい学習曲線
35.
他言語を導入するのとの違い 知らない ちょっと知って る すごく知ってる 他言語 × △? ◎ Groovy
◯ ◯ ◎
36.
Spockとは? • Groovyのテスティングフレームワーク • PowerAssertによる強力なレポーティング •
ブロックによる記法の統一 • DSLを使った簡潔で分かりやすい記述 • 標準でMockのAPIを提供
37.
JUnitからSpockへ(Before)
38.
JUnitからSpockへ(After)
39.
JavaからGroovyへ
40.
JavaからGroovyへ Method Unrolling Blocks Power Assert Data
Tables
41.
Blocks • ラベルによってブロック を分割 • xUnit
Test Patternsの "Four Phase Test"をフ レームワークとして強制 &宣言的に記述 • 従わない場合エラー
42.
Power Assert • 失敗時に中間結果も含む詳 細を出力 •
Groovy本体にも取り込まれ た強力なレポーティング機 能 • 多言語のライブラリにも移 植
43.
Data Tables • パラメータ化テストの サポート •
テストパターンの可読 性向上 • ‘||’でパラメータと結果 を見分けやすく
44.
Method Unrolling 実行時テスト名を動的に変更 文字列のメソッド
45.
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/
46.
Java×JUnit to Groovy×Spock
47.
多くのケース網羅が必要なテストにおいて 簡潔な記述 複雑な構造× Groovy ×
Spockが解決
48.
テストに便利なGroovy • Collection • Map
Constructor • GString • File • SQL • DSL
49.
Collection • 容易な初期化 • シンプルな記法 •
setupなどに便利
50.
Map Constructor • 1ラインで初期化 •
setupで便利
51.
GString • ヒアドキュメント • 可読性向上 •
whereブロック変数との 組み合わせ可能 • モックやSQL文などに便 利
52.
File • 簡潔な記述 • 外部ライブラリならCSV やExcelも扱いやすい •
テストデータ生成に便利
53.
SQL • 面倒なセットアップ無し • 外部ライブラリ不要 •
テストデータ準備、 assertなどに便利
54.
DSL • Javaでは出来ない言語 拡張 • アイディア次第で色々 可能(やり過ぎ注意) •
可読性、効率向上 https://github.com/disc99/table-setup
55.
その他Groovy活用 • Geb • Groovyの機能を活用したSeleniumラッパー •
Selenumも推奨するPageObjectパターンを利用したメンテナンス性の高いテスト、 JQueryライクなインターフェイス、Spock連携 • Gradle • Spring、Hibernate、Androidなどにも標準採用されているビルドツール • Mavenのようなライフサイクル管理、依存性解決、Groovyのシンプルなシンタックス、 DSLを利用した可読性、柔軟なビルドスクリプト • IntelliJ IDEA • 標準でGroovyをサポートしているIDE。プラグインなどの追加不要でGroovyを記述可能
56.
ただGroovyってどうなの? • 最近流行りのJVM言語ではない? • モダンな動的言語、テスト用途としては十分な機能 •
破壊的変更がある他のJVM言語とは違い、ほとんどのJava構文が使え る • 将来性は? • 少なくともこの先数年は現役で使える(個人的印象) • 廃れたとしても、削減した時間で十分もとは取れる • それでも不安なら、Groovyの独自記法は避けJavaらしい記法によせる
57.
テストに求められること (Groovy×Spock適用後) • 仕様、処理の明確化 →
複雑なセットアップ、多数のモック化、読み取れない処理内 容 • Groovyのシンプルなシンタックスによりテスト内容に集中可能 • 安全なコード修正、バグの検知 → その場限り、テスト成功させるためだけの修正 • PowerAssertによる失敗内容の明確化 • 開発スピードの向上 → 工数軽減のために後回し • 軽量化した記述量、可読性向上によって短時間でテスト記述が可能 • 開発者の安心感 → 不足したテストによる消し去れない不安 • whereブロックによるパラメータ化テストなど多くのケースを簡単に網羅可能
58.
まとめ • Groovyは導入の負荷にならない学習コスト、緩やか な学習曲線 • Javaの冗長なテスト記述を軽減、高速化、可読性向上 •
Spockで宣言的かつシンプルに多くのパターンを網羅 • PowerAssertでテスト失敗時にも直感的なエラー表示 • その他Groovy機能、ツールを利用し開発効率化
59.
Javaのかわりに Groovy
60.
Javaで開発するから Groovy
61.
JavaのテストGroovyでいい んじゃない?
62.
参考 • http://qiita.com/euno7/items/ 1e834d3d58da3e659f92 • http://www.slideshare.net/nobeans/javagroovy •
http://qiita.com/kazurof/items/ 584a3ff49e9a2f4c7717 • http://www.slideshare.net/uehaj/groovy- bootcamp-2015-by-jggug
Jetzt herunterladen