SlideShare a Scribd company logo
JavaのテストGroovy
でいいのではないかと
いう話
@disc99
もくじ
• 背景
• はじめに
• テストに求められること
• Java × JUnitのテスト
• Groovy × Spockのテスト
• Groovyの活用
• まとめ
背景
• Groovy、Spockについて
• いきなり勧めてもメリットが分かりにくい
• 導入するにあたって
• 使い方やメリットを共有したい
• 参考資料が欲しい
注意点
• このスライド
• テスト = ユニットテスト、テストコード
• プロダクションコードはJavaで開発を想
定
はじめに
テスト書いてますか?
テストがどうあるべきか分か
りますか?
今回はもう一歩先の話
テストに求められること
• 仕様、処理の明確化
• 複雑な仕様も簡潔な記述で理解できる
• テスト側にバグが生まれるような複雑な構造にしない
• 安全なコード修正、バグの検知
• 開発スピードの向上
• 開発者の安心感
多くのケース網羅が必要なテストにおいて
簡潔な記述    複雑な構造×
現実
テストに求められること
(現実)
• 仕様、処理の明確化
• 複雑なセットアップ、大量のモック化、読み取れない処理内容
• 安全なコード修正、バグの検知
• テスト成功させるためだけのその場限りの修正
• 開発スピードの向上
• 工数軽減のためにテスト自体を後回し
• 開発者の安心感
• 不足したテスト、信頼性の低下による拭い去れない不安
現実は厳しい
テストどうする?
Java × JUnit
で解決する
よくあるJUnit
よくあるJUnit テスト名が適当
繰り返されるsetupとassert
- 途中で失敗すると実行されない
- どこまでが初期化でどこまでが
ターゲット?
- 全ての組み合わせがわかりくい
JUnit4からはassetThatが追加
一つのテストで複数メソッド
のテスト
JUnitで解決
JUnitで解決
適切なテスト名
@Beforeによるsetup
Theoriesでパラメータ化テスト
コンテキスト単位でEnclosedなども使用
テストパターンの可読性向上
assertが一つになりテスト内容が明確化
JUnit 5ではより改善?
• @DisplayNameでテスト名を記述
• @Nestedのよる構造化
• ParameterResolverでパラメータ化テスト
• DynamicTestによる動的テスト
• Rule、TestRunnerとかは廃止
• Matcherに非依存
• Java 8以上
解決\(^o^)/
さらにテストが増えると…
うーん…
本当に解決?
実際に開発は
もっと複雑
JUnitの問題点
• 構造化すると可読性が悪化しやすい
• テストの失敗が分かりにくい
• 複雑になってくると記法の一貫性確保が難しい
• assertやmockなどが外部ライブラリに依存
• そもそも、Javaは基本的に冗長
Groovy × Spock
で解決する
JavaなのにGroovy?
Groovyとは
• ポストJava(置き換え)ではなく、Javaの拡張
• Javaとの併用のために生まれ、併用に特化された
言語
• モダンな言語の機能を積極的に取り込み
• Rubyに似た文法で柔軟、拡張性が高い
• Java VMとgroovy-all.jarだけあれば動く
Hello World
Hello World
違いは拡張子のみ
Javaの記法は
ほぼそのまま動く
(ラムダ式はクロージャ)
Groovyでよりシンプルに
Groovyで書いた同じ処理
HTTPに限れば
Javaで書いた処理
JavaエンジニアにとってのGroovy
• Groovyが分からなければJavaで書く
• 分かればGroovyも書く
• レビューなどを通してキャッチアップ
• 随時理解で十分なゆるい学習曲線
他言語を導入するのとの違い
知らない
ちょっと知って
る
すごく知ってる
他言語
× △? ◎
Groovy ◯ ◯ ◎
Spockとは?
• Groovyのテスティングフレームワーク
• PowerAssertによる強力なレポーティング
• ブロックによる記法の統一
• DSLを使った簡潔で分かりやすい記述
• 標準でMockのAPIを提供
JUnitからSpockへ(Before)
JUnitからSpockへ(After)
JavaからGroovyへ
JavaからGroovyへ
Method Unrolling
Blocks
Power Assert
Data Tables
Blocks
• ラベルによってブロック
を分割
• xUnit Test Patternsの
"Four Phase Test"をフ
レームワークとして強制
&宣言的に記述
• 従わない場合エラー
Power Assert
• 失敗時に中間結果も含む詳
細を出力
• Groovy本体にも取り込まれ
た強力なレポーティング機
能
• 多言語のライブラリにも移
植
Data Tables
• パラメータ化テストの
サポート
• テストパターンの可読
性向上
• ‘||’でパラメータと結果
を見分けやすく
Method Unrolling
実行時テスト名を動的に変更
文字列のメソッド
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/
Java×JUnit to Groovy×Spock
多くのケース網羅が必要なテストにおいて
簡潔な記述    複雑な構造×
Groovy × Spockが解決
テストに便利なGroovy
• Collection
• Map Constructor
• GString
• File
• SQL
• DSL
Collection
• 容易な初期化
• シンプルな記法
• setupなどに便利
Map Constructor
• 1ラインで初期化
• setupで便利
GString
• ヒアドキュメント
• 可読性向上
• whereブロック変数との
組み合わせ可能
• モックやSQL文などに便
利
File
• 簡潔な記述
• 外部ライブラリならCSV
やExcelも扱いやすい
• テストデータ生成に便利
SQL
• 面倒なセットアップ無し
• 外部ライブラリ不要
• テストデータ準備、
assertなどに便利
DSL
• Javaでは出来ない言語
拡張
• アイディア次第で色々
可能(やり過ぎ注意)
• 可読性、効率向上
https://github.com/disc99/table-setup
その他Groovy活用
• Geb
• Groovyの機能を活用したSeleniumラッパー
• Selenumも推奨するPageObjectパターンを利用したメンテナンス性の高いテスト、
JQueryライクなインターフェイス、Spock連携
• Gradle
• Spring、Hibernate、Androidなどにも標準採用されているビルドツール
• Mavenのようなライフサイクル管理、依存性解決、Groovyのシンプルなシンタックス、
DSLを利用した可読性、柔軟なビルドスクリプト
• IntelliJ IDEA
• 標準でGroovyをサポートしているIDE。プラグインなどの追加不要でGroovyを記述可能
ただGroovyってどうなの?
• 最近流行りのJVM言語ではない?
• モダンな動的言語、テスト用途としては十分な機能
• 破壊的変更がある他のJVM言語とは違い、ほとんどのJava構文が使え
る
• 将来性は?
• 少なくともこの先数年は現役で使える(個人的印象)
• 廃れたとしても、削減した時間で十分もとは取れる
• それでも不安なら、Groovyの独自記法は避けJavaらしい記法によせる
テストに求められること
(Groovy×Spock適用後)
• 仕様、処理の明確化 → 複雑なセットアップ、多数のモック化、読み取れない処理内
容
• Groovyのシンプルなシンタックスによりテスト内容に集中可能
• 安全なコード修正、バグの検知 → その場限り、テスト成功させるためだけの修正
• PowerAssertによる失敗内容の明確化
• 開発スピードの向上 → 工数軽減のために後回し
• 軽量化した記述量、可読性向上によって短時間でテスト記述が可能
• 開発者の安心感 → 不足したテストによる消し去れない不安
• whereブロックによるパラメータ化テストなど多くのケースを簡単に網羅可能
まとめ
• Groovyは導入の負荷にならない学習コスト、緩やか
な学習曲線
• Javaの冗長なテスト記述を軽減、高速化、可読性向上
• Spockで宣言的かつシンプルに多くのパターンを網羅
• PowerAssertでテスト失敗時にも直感的なエラー表示
• その他Groovy機能、ツールを利用し開発効率化
Javaのかわりに
Groovy
Javaで開発するから
Groovy
JavaのテストGroovyでいい
んじゃない?
参考
• 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

More Related Content

What's hot (20)

BuildKitの概要と最近の機能
BuildKitの概要と最近の機能BuildKitの概要と最近の機能
BuildKitの概要と最近の機能
Kohei Tokunaga
 
ブルックスのいう銀の弾丸とは何か?
ブルックスのいう銀の弾丸とは何か?ブルックスのいう銀の弾丸とは何か?
ブルックスのいう銀の弾丸とは何か?
Yoshitaka Kawashima
 
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
y torazuka
 
分散環境におけるDocker とオーケストレーション
分散環境におけるDocker とオーケストレーション分散環境におけるDocker とオーケストレーション
分散環境におけるDocker とオーケストレーション
Masahito Zembutsu
 
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
Y Watanabe
 
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
Preferred Networks
 
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
Mikiya Okuno
 
PostgreSQLアンチパターン
PostgreSQLアンチパターンPostgreSQLアンチパターン
PostgreSQLアンチパターン
Soudai Sone
 
トランザクションの設計と進化
トランザクションの設計と進化トランザクションの設計と進化
トランザクションの設計と進化
Kumazaki Hiroki
 
できる!並列・並行プログラミング
できる!並列・並行プログラミングできる!並列・並行プログラミング
できる!並列・並行プログラミング
Preferred Networks
 
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドBuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
Akihiro Suda
 
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
Yoshitaka Kawashima
 
TLS, HTTP/2演習
TLS, HTTP/2演習TLS, HTTP/2演習
TLS, HTTP/2演習
shigeki_ohtsu
 
openSUSEで最強仮想環境をつくろう - ゲーミングから仮想通貨まで - OSC名古屋2017セミナー資料
openSUSEで最強仮想環境をつくろう - ゲーミングから仮想通貨まで - OSC名古屋2017セミナー資料openSUSEで最強仮想環境をつくろう - ゲーミングから仮想通貨まで - OSC名古屋2017セミナー資料
openSUSEで最強仮想環境をつくろう - ゲーミングから仮想通貨まで - OSC名古屋2017セミナー資料
zgock
 
思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall
思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall
思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall
Yoshitaka Kawashima
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
Kumazaki Hiroki
 
C++ マルチスレッドプログラミング
C++ マルチスレッドプログラミングC++ マルチスレッドプログラミング
C++ マルチスレッドプログラミング
Kohsuke Yuasa
 
SpotBugs(FindBugs)による 大規模ERPのコード品質改善
SpotBugs(FindBugs)による 大規模ERPのコード品質改善SpotBugs(FindBugs)による 大規模ERPのコード品質改善
SpotBugs(FindBugs)による 大規模ERPのコード品質改善
Works Applications
 
組織にテストを書く文化を根付かせる戦略と戦術
組織にテストを書く文化を根付かせる戦略と戦術組織にテストを書く文化を根付かせる戦略と戦術
組織にテストを書く文化を根付かせる戦略と戦術
Takuto Wada
 
Docker 基本のおさらい
Docker 基本のおさらいDocker 基本のおさらい
Docker 基本のおさらい
Naoki Nagazumi
 
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能BuildKitの概要と最近の機能
BuildKitの概要と最近の機能
Kohei Tokunaga
 
ブルックスのいう銀の弾丸とは何か?
ブルックスのいう銀の弾丸とは何か?ブルックスのいう銀の弾丸とは何か?
ブルックスのいう銀の弾丸とは何か?
Yoshitaka Kawashima
 
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
y torazuka
 
分散環境におけるDocker とオーケストレーション
分散環境におけるDocker とオーケストレーション分散環境におけるDocker とオーケストレーション
分散環境におけるDocker とオーケストレーション
Masahito Zembutsu
 
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
Y Watanabe
 
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
Preferred Networks
 
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
Mikiya Okuno
 
PostgreSQLアンチパターン
PostgreSQLアンチパターンPostgreSQLアンチパターン
PostgreSQLアンチパターン
Soudai Sone
 
トランザクションの設計と進化
トランザクションの設計と進化トランザクションの設計と進化
トランザクションの設計と進化
Kumazaki Hiroki
 
できる!並列・並行プログラミング
できる!並列・並行プログラミングできる!並列・並行プログラミング
できる!並列・並行プログラミング
Preferred Networks
 
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドBuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
Akihiro Suda
 
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
Yoshitaka Kawashima
 
openSUSEで最強仮想環境をつくろう - ゲーミングから仮想通貨まで - OSC名古屋2017セミナー資料
openSUSEで最強仮想環境をつくろう - ゲーミングから仮想通貨まで - OSC名古屋2017セミナー資料openSUSEで最強仮想環境をつくろう - ゲーミングから仮想通貨まで - OSC名古屋2017セミナー資料
openSUSEで最強仮想環境をつくろう - ゲーミングから仮想通貨まで - OSC名古屋2017セミナー資料
zgock
 
思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall
思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall
思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall
Yoshitaka Kawashima
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
Kumazaki Hiroki
 
C++ マルチスレッドプログラミング
C++ マルチスレッドプログラミングC++ マルチスレッドプログラミング
C++ マルチスレッドプログラミング
Kohsuke Yuasa
 
SpotBugs(FindBugs)による 大規模ERPのコード品質改善
SpotBugs(FindBugs)による 大規模ERPのコード品質改善SpotBugs(FindBugs)による 大規模ERPのコード品質改善
SpotBugs(FindBugs)による 大規模ERPのコード品質改善
Works Applications
 
組織にテストを書く文化を根付かせる戦略と戦術
組織にテストを書く文化を根付かせる戦略と戦術組織にテストを書く文化を根付かせる戦略と戦術
組織にテストを書く文化を根付かせる戦略と戦術
Takuto Wada
 
Docker 基本のおさらい
Docker 基本のおさらいDocker 基本のおさらい
Docker 基本のおさらい
Naoki Nagazumi
 

Similar to JavaのテストGroovyでいいのではないかという話 (20)

Xcode10での テスト周りの進化をふりかえる
Xcode10での テスト周りの進化をふりかえるXcode10での テスト周りの進化をふりかえる
Xcode10での テスト周りの進化をふりかえる
Toshiyuki Hirata
 
Gws in fukuoka
Gws in fukuokaGws in fukuoka
Gws in fukuoka
Takuma Watabiki
 
Spock's world
Spock's worldSpock's world
Spock's world
Takuma Watabiki
 
JavaとScalaとGroovyと
JavaとScalaとGroovyとJavaとScalaとGroovyと
JavaとScalaとGroovyと
irof N
 
20120421中国gtug
20120421中国gtug20120421中国gtug
20120421中国gtug
Yusuke Sato
 
Groovy base
Groovy baseGroovy base
Groovy base
Akura Pi
 
Play jjug2012spring
Play jjug2012springPlay jjug2012spring
Play jjug2012spring
Takafumi Ikeda
 
脱・独自改造! GebでWebDriverをもっとシンプルに
脱・独自改造! GebでWebDriverをもっとシンプルに脱・独自改造! GebでWebDriverをもっとシンプルに
脱・独自改造! GebでWebDriverをもっとシンプルに
Hiroko Tamagawa
 
nseg第5回勉強会
nseg第5回勉強会nseg第5回勉強会
nseg第5回勉強会
ko ty
 
PlayFramework1.x基礎編
PlayFramework1.x基礎編PlayFramework1.x基礎編
PlayFramework1.x基礎編
Asami Abe
 
C# から java へのプログラム移植で体験したtddの効果は?
C# から java へのプログラム移植で体験したtddの効果は?C# から java へのプログラム移植で体験したtddの効果は?
C# から java へのプログラム移植で体験したtddの効果は?
Shinichi Hirauchi
 
GCSアジャイル開発を使ったゲームの作り方
 GCSアジャイル開発を使ったゲームの作り方 GCSアジャイル開発を使ったゲームの作り方
GCSアジャイル開発を使ったゲームの作り方
Hiroyuki Tanaka
 
第5回勉強会
第5回勉強会第5回勉強会
第5回勉強会
Mugen Fujii
 
(未発表) JavaScriptテスト勉強会@福岡#0の前に考えていたこと
(未発表) JavaScriptテスト勉強会@福岡#0の前に考えていたこと(未発表) JavaScriptテスト勉強会@福岡#0の前に考えていたこと
(未発表) JavaScriptテスト勉強会@福岡#0の前に考えていたこと
Kohki Nakashima
 
テストエンジニアの品格 #automatornight
テストエンジニアの品格 #automatornightテストエンジニアの品格 #automatornight
テストエンジニアの品格 #automatornight
kyon mm
 
テスト駆動開発の導入ーペアプログラミングの学習効果ー
テスト駆動開発の導入ーペアプログラミングの学習効果ーテスト駆動開発の導入ーペアプログラミングの学習効果ー
テスト駆動開発の導入ーペアプログラミングの学習効果ー
Shuji Watanabe
 
Play frameworkの概要
Play frameworkの概要Play frameworkの概要
Play frameworkの概要
Shuhei Kaneko
 
Gradleどうでしょう
GradleどうでしょうGradleどうでしょう
Gradleどうでしょう
Takuma Watabiki
 
xUnit Test Patterns - Chapter16
xUnit Test Patterns - Chapter16xUnit Test Patterns - Chapter16
xUnit Test Patterns - Chapter16
Takuto Wada
 
自社開発プロダクト ALL-IN で行っている単体テストのパフォーマンスチューニングTips
自社開発プロダクト ALL-IN で行っている単体テストのパフォーマンスチューニングTips自社開発プロダクト ALL-IN で行っている単体テストのパフォーマンスチューニングTips
自社開発プロダクト ALL-IN で行っている単体テストのパフォーマンスチューニングTips
Shou Takenaka
 
Xcode10での テスト周りの進化をふりかえる
Xcode10での テスト周りの進化をふりかえるXcode10での テスト周りの進化をふりかえる
Xcode10での テスト周りの進化をふりかえる
Toshiyuki Hirata
 
JavaとScalaとGroovyと
JavaとScalaとGroovyとJavaとScalaとGroovyと
JavaとScalaとGroovyと
irof N
 
20120421中国gtug
20120421中国gtug20120421中国gtug
20120421中国gtug
Yusuke Sato
 
Groovy base
Groovy baseGroovy base
Groovy base
Akura Pi
 
脱・独自改造! GebでWebDriverをもっとシンプルに
脱・独自改造! GebでWebDriverをもっとシンプルに脱・独自改造! GebでWebDriverをもっとシンプルに
脱・独自改造! GebでWebDriverをもっとシンプルに
Hiroko Tamagawa
 
nseg第5回勉強会
nseg第5回勉強会nseg第5回勉強会
nseg第5回勉強会
ko ty
 
PlayFramework1.x基礎編
PlayFramework1.x基礎編PlayFramework1.x基礎編
PlayFramework1.x基礎編
Asami Abe
 
C# から java へのプログラム移植で体験したtddの効果は?
C# から java へのプログラム移植で体験したtddの効果は?C# から java へのプログラム移植で体験したtddの効果は?
C# から java へのプログラム移植で体験したtddの効果は?
Shinichi Hirauchi
 
GCSアジャイル開発を使ったゲームの作り方
 GCSアジャイル開発を使ったゲームの作り方 GCSアジャイル開発を使ったゲームの作り方
GCSアジャイル開発を使ったゲームの作り方
Hiroyuki Tanaka
 
第5回勉強会
第5回勉強会第5回勉強会
第5回勉強会
Mugen Fujii
 
(未発表) JavaScriptテスト勉強会@福岡#0の前に考えていたこと
(未発表) JavaScriptテスト勉強会@福岡#0の前に考えていたこと(未発表) JavaScriptテスト勉強会@福岡#0の前に考えていたこと
(未発表) JavaScriptテスト勉強会@福岡#0の前に考えていたこと
Kohki Nakashima
 
テストエンジニアの品格 #automatornight
テストエンジニアの品格 #automatornightテストエンジニアの品格 #automatornight
テストエンジニアの品格 #automatornight
kyon mm
 
テスト駆動開発の導入ーペアプログラミングの学習効果ー
テスト駆動開発の導入ーペアプログラミングの学習効果ーテスト駆動開発の導入ーペアプログラミングの学習効果ー
テスト駆動開発の導入ーペアプログラミングの学習効果ー
Shuji Watanabe
 
Play frameworkの概要
Play frameworkの概要Play frameworkの概要
Play frameworkの概要
Shuhei Kaneko
 
Gradleどうでしょう
GradleどうでしょうGradleどうでしょう
Gradleどうでしょう
Takuma Watabiki
 
xUnit Test Patterns - Chapter16
xUnit Test Patterns - Chapter16xUnit Test Patterns - Chapter16
xUnit Test Patterns - Chapter16
Takuto Wada
 
自社開発プロダクト ALL-IN で行っている単体テストのパフォーマンスチューニングTips
自社開発プロダクト ALL-IN で行っている単体テストのパフォーマンスチューニングTips自社開発プロダクト ALL-IN で行っている単体テストのパフォーマンスチューニングTips
自社開発プロダクト ALL-IN で行っている単体テストのパフォーマンスチューニングTips
Shou Takenaka
 

Recently uploaded (9)

PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
NTT DATA Technology & Innovation
 
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
NTT DATA Technology & Innovation
 
IoT Devices Compliant with JC-STAR Using Linux as a Container OS
IoT Devices Compliant with JC-STAR Using Linux as a Container OSIoT Devices Compliant with JC-STAR Using Linux as a Container OS
IoT Devices Compliant with JC-STAR Using Linux as a Container OS
Tomohiro Saneyoshi
 
IchiiRikisuke_理学療法士間の知識共有に向けた臨床推論テキストの構造化に関する研究.pdf
IchiiRikisuke_理学療法士間の知識共有に向けた臨床推論テキストの構造化に関する研究.pdfIchiiRikisuke_理学療法士間の知識共有に向けた臨床推論テキストの構造化に関する研究.pdf
IchiiRikisuke_理学療法士間の知識共有に向けた臨床推論テキストの構造化に関する研究.pdf
Matsushita Laboratory
 
【修士論文】競輪における注目レース選定とLLMを用いたレース紹介記事生成に関する研究
【修士論文】競輪における注目レース選定とLLMを用いたレース紹介記事生成に関する研究【修士論文】競輪における注目レース選定とLLMを用いたレース紹介記事生成に関する研究
【修士論文】競輪における注目レース選定とLLMを用いたレース紹介記事生成に関する研究
harmonylab
 
20250222_neko_IoTLT_vol10_kitazaki_v1.pdf
20250222_neko_IoTLT_vol10_kitazaki_v1.pdf20250222_neko_IoTLT_vol10_kitazaki_v1.pdf
20250222_neko_IoTLT_vol10_kitazaki_v1.pdf
Ayachika Kitazaki
 
ElasticsearchでSPLADEする [Search Engineering Tech Talk 2025 Winter]
ElasticsearchでSPLADEする [Search Engineering Tech Talk 2025 Winter]ElasticsearchでSPLADEする [Search Engineering Tech Talk 2025 Winter]
ElasticsearchでSPLADEする [Search Engineering Tech Talk 2025 Winter]
kota usuha
 
ドメインモデリング基本編①~全体の流れ2025_02_27社内向け開催.pptx
ドメインモデリング基本編①~全体の流れ2025_02_27社内向け開催.pptxドメインモデリング基本編①~全体の流れ2025_02_27社内向け開催.pptx
ドメインモデリング基本編①~全体の流れ2025_02_27社内向け開催.pptx
ssuserfcafd1
 
【修士論文】帝国議会および国会議事速記録における可能表現の長期的変遷に関する研究
【修士論文】帝国議会および国会議事速記録における可能表現の長期的変遷に関する研究【修士論文】帝国議会および国会議事速記録における可能表現の長期的変遷に関する研究
【修士論文】帝国議会および国会議事速記録における可能表現の長期的変遷に関する研究
harmonylab
 
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
NTT DATA Technology & Innovation
 
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
NTT DATA Technology & Innovation
 
IoT Devices Compliant with JC-STAR Using Linux as a Container OS
IoT Devices Compliant with JC-STAR Using Linux as a Container OSIoT Devices Compliant with JC-STAR Using Linux as a Container OS
IoT Devices Compliant with JC-STAR Using Linux as a Container OS
Tomohiro Saneyoshi
 
IchiiRikisuke_理学療法士間の知識共有に向けた臨床推論テキストの構造化に関する研究.pdf
IchiiRikisuke_理学療法士間の知識共有に向けた臨床推論テキストの構造化に関する研究.pdfIchiiRikisuke_理学療法士間の知識共有に向けた臨床推論テキストの構造化に関する研究.pdf
IchiiRikisuke_理学療法士間の知識共有に向けた臨床推論テキストの構造化に関する研究.pdf
Matsushita Laboratory
 
【修士論文】競輪における注目レース選定とLLMを用いたレース紹介記事生成に関する研究
【修士論文】競輪における注目レース選定とLLMを用いたレース紹介記事生成に関する研究【修士論文】競輪における注目レース選定とLLMを用いたレース紹介記事生成に関する研究
【修士論文】競輪における注目レース選定とLLMを用いたレース紹介記事生成に関する研究
harmonylab
 
20250222_neko_IoTLT_vol10_kitazaki_v1.pdf
20250222_neko_IoTLT_vol10_kitazaki_v1.pdf20250222_neko_IoTLT_vol10_kitazaki_v1.pdf
20250222_neko_IoTLT_vol10_kitazaki_v1.pdf
Ayachika Kitazaki
 
ElasticsearchでSPLADEする [Search Engineering Tech Talk 2025 Winter]
ElasticsearchでSPLADEする [Search Engineering Tech Talk 2025 Winter]ElasticsearchでSPLADEする [Search Engineering Tech Talk 2025 Winter]
ElasticsearchでSPLADEする [Search Engineering Tech Talk 2025 Winter]
kota usuha
 
ドメインモデリング基本編①~全体の流れ2025_02_27社内向け開催.pptx
ドメインモデリング基本編①~全体の流れ2025_02_27社内向け開催.pptxドメインモデリング基本編①~全体の流れ2025_02_27社内向け開催.pptx
ドメインモデリング基本編①~全体の流れ2025_02_27社内向け開催.pptx
ssuserfcafd1
 
【修士論文】帝国議会および国会議事速記録における可能表現の長期的変遷に関する研究
【修士論文】帝国議会および国会議事速記録における可能表現の長期的変遷に関する研究【修士論文】帝国議会および国会議事速記録における可能表現の長期的変遷に関する研究
【修士論文】帝国議会および国会議事速記録における可能表現の長期的変遷に関する研究
harmonylab
 

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