Submit Search
Upload
Db unitを使って なれる! レガシーコードメンテナー
•
1 like
•
3,766 views
Youtarou TAKAHASHI
Follow
『JUnit実践入門』写経・実践会 in 横浜 #4 でのLT資料です。
Read less
Read more
Technology
Report
Share
Report
Share
1 of 14
Download now
Download to read offline
Recommended
TDDでレガシーコードに立ち向かう
TDDでレガシーコードに立ち向かう
Youtarou TAKAHASHI
『JUnit実践入門』写経・実践会 in 横浜 #4 でLTしたネタを、 TDD Boot Camp Tokyo 2013-03にあわてて焼きなおしてLTした際の資料。重複多いですが備忘の意味でアップ。
LastaFluteでKotlinをはじめよう
LastaFluteでKotlinをはじめよう
Shinsuke Sugaya
LastaFluteでKotlinを使うための方法を紹介します。
ふぉとぶらり+LODAC -iPhoneアプリでのSPARQLでの活用事例-
ふぉとぶらり+LODAC -iPhoneアプリでのSPARQLでの活用事例-
uedayou
ふぉとぶらり+LODAC -iPhoneアプリでのSPARQLでの活用事例- ATR-Promotions 上田 洋 2011/07/23 第2回Linked Data勉強会
再帰的 正規表現JSON Validator
再帰的 正規表現JSON Validator
takesako
PCREの記法(?R)(?0)(?1)を使うテクニック
PinQAでのMongoDB活用事例
PinQAでのMongoDB活用事例
Misa Kondo
Domain specific language としての魔法少女まどか☆マギカ入門
Domain specific language としての魔法少女まどか☆マギカ入門
Hiroyuki Ito
2013/03/19(Tue)に、アジャイルサムライ横浜道場で発表させていただいたスライドです。 http://yokohama-dojo.doorkeeper.jp/events/2912
Nonaka's Scrum, Phronetic Leadership and Requirements Development
Nonaka's Scrum, Phronetic Leadership and Requirements Development
Kenji Hiranabe
アジャイル開発とアジャイル、 実践知リーダーシップと 要求開発 2013年3月21日、要求開発アライアンスにて。
リッチなドメインモデル 名前探し
リッチなドメインモデル 名前探し
増田 亨
java_ja java_ja_ddd 2013-3-22 発表。ドメイン駆動設計(DDD)の実践
Recommended
TDDでレガシーコードに立ち向かう
TDDでレガシーコードに立ち向かう
Youtarou TAKAHASHI
『JUnit実践入門』写経・実践会 in 横浜 #4 でLTしたネタを、 TDD Boot Camp Tokyo 2013-03にあわてて焼きなおしてLTした際の資料。重複多いですが備忘の意味でアップ。
LastaFluteでKotlinをはじめよう
LastaFluteでKotlinをはじめよう
Shinsuke Sugaya
LastaFluteでKotlinを使うための方法を紹介します。
ふぉとぶらり+LODAC -iPhoneアプリでのSPARQLでの活用事例-
ふぉとぶらり+LODAC -iPhoneアプリでのSPARQLでの活用事例-
uedayou
ふぉとぶらり+LODAC -iPhoneアプリでのSPARQLでの活用事例- ATR-Promotions 上田 洋 2011/07/23 第2回Linked Data勉強会
再帰的 正規表現JSON Validator
再帰的 正規表現JSON Validator
takesako
PCREの記法(?R)(?0)(?1)を使うテクニック
PinQAでのMongoDB活用事例
PinQAでのMongoDB活用事例
Misa Kondo
Domain specific language としての魔法少女まどか☆マギカ入門
Domain specific language としての魔法少女まどか☆マギカ入門
Hiroyuki Ito
2013/03/19(Tue)に、アジャイルサムライ横浜道場で発表させていただいたスライドです。 http://yokohama-dojo.doorkeeper.jp/events/2912
Nonaka's Scrum, Phronetic Leadership and Requirements Development
Nonaka's Scrum, Phronetic Leadership and Requirements Development
Kenji Hiranabe
アジャイル開発とアジャイル、 実践知リーダーシップと 要求開発 2013年3月21日、要求開発アライアンスにて。
リッチなドメインモデル 名前探し
リッチなドメインモデル 名前探し
増田 亨
java_ja java_ja_ddd 2013-3-22 発表。ドメイン駆動設計(DDD)の実践
Inside mobage platform
Inside mobage platform
Toru Yamaguchi
Inside Mobage Platform Architecture
OSSから学ぶSwift実践テクニック
OSSから学ぶSwift実践テクニック
庸介 高橋
Kyobashi.swiftで発表した内容です。
クラウド時代の並列分散処理技術
クラウド時代の並列分散処理技術
Koichi Fujikawa
福岡県Ruby・コンテンツ産業振興センター開所記念Rubyビジネスセミナー http://www.f-ruby.com/news/event/13
111008 silverlight square_datavalidation
111008 silverlight square_datavalidation
Takayoshi Tanaka
勉強会force#4 Chatter Integration
勉強会force#4 Chatter Integration
Kazuki Nakajima
Spring3.1概要 データアクセスとトランザクション処理
Spring3.1概要 データアクセスとトランザクション処理
土岐 孝平
Teclab3
Teclab3
Eikichi Yamaguchi
tech lab3
【18-C-4】Google App Engine - 無限の彼方へ
【18-C-4】Google App Engine - 無限の彼方へ
Developers Summit
Apache Torqueについて
Apache Torqueについて
tako pons
Apache Torque(あぱっち・とるく) について Javaツール勉強会@福岡 2016/08 ~データベースツールとかいろいろ~
Spring Data in a Nutshell
Spring Data in a Nutshell
Tsuyoshi Miyake
Html5 Web Applications
Html5 Web Applications
totty jp
CodeIgniter入門
CodeIgniter入門
Sho A
「速い」「自由」「習得しやすい」と話題沸騰中のPHPフレームワークCodeIgniterについて,「PHPで何かつくったことがある」レベルの方を対象に解説します。 http://blog.akagi.jp/archives/1776.html
[AI08] 深層学習フレームワーク Chainer × Microsoft で広がる応用
[AI08] 深層学習フレームワーク Chainer × Microsoft で広がる応用
de:code 2017
本講演では、まず深層学習フレームワーク Chainer の特長およびその基本的な使い方を解説します。次に Azure を含む Microsoft のプラットフォーム上等の様々な環境で Chainer を動かす方法、またそれによって広がる応用と、今後の展望について述べます。 受講対象: Deep Learning の基礎を理解し、最新状況を理解したい方。あるいは既に Chainer をご利用の方は是非ご参加ください。 製品/テクノロジ: AI (人工知能)/Deep Learning (深層学習)/Machine Learning (機械学習) 齋藤 俊太 株式会社Preferred Networks リサーチャー
リアルFacebookガジェットを作った(ロングバージョン)
リアルFacebookガジェットを作った(ロングバージョン)
Mariko Goda
Facebook Night vol9の資料。 こちらは時間の関係で削ったボツネタ (PageAgeの技術的解説、Windows & Mac OS Xネイティブアプリで独自URIスキームを使用してユーザ認証を行う方法) も含んでいます。
復習も兼ねて!C#6.0-7.0
復習も兼ねて!C#6.0-7.0
Yuta Matsumura
Fukuoka.NET #6 の登壇資料です https://fukuten.connpass.com/event/51843/
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
Yoshifumi Kawai
Metro.cs #1 Background of PhotonWire - Typed Asynchronous RPC Layer for Photon Server + Unity
[東京] JapanSharePointGroup 勉強会 #2
[東京] JapanSharePointGroup 勉強会 #2
Atsuo Yamasaki
株式会社アンクの山本さんのPowerShellセッション
zozotown real time linkage infrastructure
zozotown real time linkage infrastructure
KeisukeTaniguchi2
https://zozotech-inc.connpass.com/event/183818/
Groovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみよう
Akira Shimosako
2013年2月22日開催の CLUB DB2 第158回 「Javaプログラマーに贈る:Groovyで楽にSQLを実行してみよう」の資料です。 https://www.ibm.com/developerworks/mydeveloperworks/wikis/home?lang=ja#/wiki/ClubDB2/page/%E7%AC%AC158%E5%9B%9E
Androidの通信周りのコーディングについて
Androidの通信周りのコーディングについて
Shoichi Takagi
Selenide or Geb 〜あなたはその時どちらを使う〜
Selenide or Geb 〜あなたはその時どちらを使う〜
Youtarou TAKAHASHI
#jjug_ccc Fall 2017での発表資料です。 #ccc_c1 http://www.java-users.jp/ccc2017fall/
SpockからRSpecにきたときの気づき #coedorb
SpockからRSpecにきたときの気づき #coedorb
Youtarou TAKAHASHI
2016/04/10 の Ruby / Railsビギナーズ勉強会第12回のLT資料です。
More Related Content
Similar to Db unitを使って なれる! レガシーコードメンテナー
Inside mobage platform
Inside mobage platform
Toru Yamaguchi
Inside Mobage Platform Architecture
OSSから学ぶSwift実践テクニック
OSSから学ぶSwift実践テクニック
庸介 高橋
Kyobashi.swiftで発表した内容です。
クラウド時代の並列分散処理技術
クラウド時代の並列分散処理技術
Koichi Fujikawa
福岡県Ruby・コンテンツ産業振興センター開所記念Rubyビジネスセミナー http://www.f-ruby.com/news/event/13
111008 silverlight square_datavalidation
111008 silverlight square_datavalidation
Takayoshi Tanaka
勉強会force#4 Chatter Integration
勉強会force#4 Chatter Integration
Kazuki Nakajima
Spring3.1概要 データアクセスとトランザクション処理
Spring3.1概要 データアクセスとトランザクション処理
土岐 孝平
Teclab3
Teclab3
Eikichi Yamaguchi
tech lab3
【18-C-4】Google App Engine - 無限の彼方へ
【18-C-4】Google App Engine - 無限の彼方へ
Developers Summit
Apache Torqueについて
Apache Torqueについて
tako pons
Apache Torque(あぱっち・とるく) について Javaツール勉強会@福岡 2016/08 ~データベースツールとかいろいろ~
Spring Data in a Nutshell
Spring Data in a Nutshell
Tsuyoshi Miyake
Html5 Web Applications
Html5 Web Applications
totty jp
CodeIgniter入門
CodeIgniter入門
Sho A
「速い」「自由」「習得しやすい」と話題沸騰中のPHPフレームワークCodeIgniterについて,「PHPで何かつくったことがある」レベルの方を対象に解説します。 http://blog.akagi.jp/archives/1776.html
[AI08] 深層学習フレームワーク Chainer × Microsoft で広がる応用
[AI08] 深層学習フレームワーク Chainer × Microsoft で広がる応用
de:code 2017
本講演では、まず深層学習フレームワーク Chainer の特長およびその基本的な使い方を解説します。次に Azure を含む Microsoft のプラットフォーム上等の様々な環境で Chainer を動かす方法、またそれによって広がる応用と、今後の展望について述べます。 受講対象: Deep Learning の基礎を理解し、最新状況を理解したい方。あるいは既に Chainer をご利用の方は是非ご参加ください。 製品/テクノロジ: AI (人工知能)/Deep Learning (深層学習)/Machine Learning (機械学習) 齋藤 俊太 株式会社Preferred Networks リサーチャー
リアルFacebookガジェットを作った(ロングバージョン)
リアルFacebookガジェットを作った(ロングバージョン)
Mariko Goda
Facebook Night vol9の資料。 こちらは時間の関係で削ったボツネタ (PageAgeの技術的解説、Windows & Mac OS Xネイティブアプリで独自URIスキームを使用してユーザ認証を行う方法) も含んでいます。
復習も兼ねて!C#6.0-7.0
復習も兼ねて!C#6.0-7.0
Yuta Matsumura
Fukuoka.NET #6 の登壇資料です https://fukuten.connpass.com/event/51843/
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
Yoshifumi Kawai
Metro.cs #1 Background of PhotonWire - Typed Asynchronous RPC Layer for Photon Server + Unity
[東京] JapanSharePointGroup 勉強会 #2
[東京] JapanSharePointGroup 勉強会 #2
Atsuo Yamasaki
株式会社アンクの山本さんのPowerShellセッション
zozotown real time linkage infrastructure
zozotown real time linkage infrastructure
KeisukeTaniguchi2
https://zozotech-inc.connpass.com/event/183818/
Groovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみよう
Akira Shimosako
2013年2月22日開催の CLUB DB2 第158回 「Javaプログラマーに贈る:Groovyで楽にSQLを実行してみよう」の資料です。 https://www.ibm.com/developerworks/mydeveloperworks/wikis/home?lang=ja#/wiki/ClubDB2/page/%E7%AC%AC158%E5%9B%9E
Androidの通信周りのコーディングについて
Androidの通信周りのコーディングについて
Shoichi Takagi
Similar to Db unitを使って なれる! レガシーコードメンテナー
(20)
Inside mobage platform
Inside mobage platform
OSSから学ぶSwift実践テクニック
OSSから学ぶSwift実践テクニック
クラウド時代の並列分散処理技術
クラウド時代の並列分散処理技術
111008 silverlight square_datavalidation
111008 silverlight square_datavalidation
勉強会force#4 Chatter Integration
勉強会force#4 Chatter Integration
Spring3.1概要 データアクセスとトランザクション処理
Spring3.1概要 データアクセスとトランザクション処理
Teclab3
Teclab3
【18-C-4】Google App Engine - 無限の彼方へ
【18-C-4】Google App Engine - 無限の彼方へ
Apache Torqueについて
Apache Torqueについて
Spring Data in a Nutshell
Spring Data in a Nutshell
Html5 Web Applications
Html5 Web Applications
CodeIgniter入門
CodeIgniter入門
[AI08] 深層学習フレームワーク Chainer × Microsoft で広がる応用
[AI08] 深層学習フレームワーク Chainer × Microsoft で広がる応用
リアルFacebookガジェットを作った(ロングバージョン)
リアルFacebookガジェットを作った(ロングバージョン)
復習も兼ねて!C#6.0-7.0
復習も兼ねて!C#6.0-7.0
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
[東京] JapanSharePointGroup 勉強会 #2
[東京] JapanSharePointGroup 勉強会 #2
zozotown real time linkage infrastructure
zozotown real time linkage infrastructure
Groovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみよう
Androidの通信周りのコーディングについて
Androidの通信周りのコーディングについて
More from Youtarou TAKAHASHI
Selenide or Geb 〜あなたはその時どちらを使う〜
Selenide or Geb 〜あなたはその時どちらを使う〜
Youtarou TAKAHASHI
#jjug_ccc Fall 2017での発表資料です。 #ccc_c1 http://www.java-users.jp/ccc2017fall/
SpockからRSpecにきたときの気づき #coedorb
SpockからRSpecにきたときの気づき #coedorb
Youtarou TAKAHASHI
2016/04/10 の Ruby / Railsビギナーズ勉強会第12回のLT資料です。
すし × TDD #sushiruit
すし × TDD #sushiruit
Youtarou TAKAHASHI
2016/03/14 のすしルート in ヒカラボでの発表です。
What makes Geb groovy?
What makes Geb groovy?
Youtarou TAKAHASHI
http://geb.connpass.com/event/11030/ での発表時資料です。
普通のエンジニアがテストエンジニアに助けてもらいたかったこと #automatornight
普通のエンジニアがテストエンジニアに助けてもらいたかったこと #automatornight
Youtarou TAKAHASHI
「自動化の窓口。」特別編での発表資料です
レガシーコードでTDD力を高めよう #agilesamurai
レガシーコードでTDD力を高めよう #agilesamurai
Youtarou TAKAHASHI
Agile Samurai Base Camp 2013.12.08(Sun) で事例発表した際の資料です。
ペアプロデモの裏話 #tddbc
ペアプロデモの裏話 #tddbc
Youtarou TAKAHASHI
2013/10/05 TDDBC YokohamaでやったLTです
More from Youtarou TAKAHASHI
(7)
Selenide or Geb 〜あなたはその時どちらを使う〜
Selenide or Geb 〜あなたはその時どちらを使う〜
SpockからRSpecにきたときの気づき #coedorb
SpockからRSpecにきたときの気づき #coedorb
すし × TDD #sushiruit
すし × TDD #sushiruit
What makes Geb groovy?
What makes Geb groovy?
普通のエンジニアがテストエンジニアに助けてもらいたかったこと #automatornight
普通のエンジニアがテストエンジニアに助けてもらいたかったこと #automatornight
レガシーコードでTDD力を高めよう #agilesamurai
レガシーコードでTDD力を高めよう #agilesamurai
ペアプロデモの裏話 #tddbc
ペアプロデモの裏話 #tddbc
Recently uploaded
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
chiefujita1
RIZAPテクノロジーズ株式会社の会社説明資料です。
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
Toru Tamaki
Xinhong Ma, Yiming Wang, Hao Liu, Tianyu Guo, Yunhe Wang, "When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Segmentation" NeurIPS2023 https://proceedings.neurips.cc/paper_files/paper/2023/hash/157c30da6a988e1cbef2095f7b9521db-Abstract-Conference.html
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
0207sukipio
JSAI2024の発表スライドです.
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
Matsushita Laboratory
我々はこれまで,新たなモノを産出する過程において「便利にすること」によって副次的に生じる課題を「便利の副作用」と定義し,その低減を目的としてアイディアの発想支援手法を提案してきた. これまでの研究では,便利前後の行為の増減に着目することにより便利の副作用への気づきの誘発が示唆されたものの,行為の増減の提示による便利の副作用への気づきへの影響は十分に検討できていなかった. そのため,本稿では行為の提示により便利の副作用に気づき,それを防いだアイディアの発想の支援が可能かの検証を目的として実験を行い,その有効性について検証する. 実験では,行為の増減の提示の有無によりアイディア発想にどのような影響を与えるか検証を行う.
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
t m
オープンエンドな進化から着想を得て、個々の大規模言語モデル(LLM)が、グループとして学習を進めながら、ノームエージェントとして機能するという概念を探求しています。これは、単一のモデルでは難しい複雑な問題を解決することを目的としています。具体的な方法として、遺伝的アルゴリズムと知識蒸留を組み合わせた学習プロセスを提案しています。知識蒸留によって学習を進め、同時に遺伝的アルゴリズムでハイパーパラメータを最適化することで、より効率的な学習を目指します。ドメインタスクとして、指示からPythonコードを生成するコード生成タスクを選択しました。実験では、学習に3つの学習モデルと1つの教師モデルを使用しました。その結果、HumanEvalのpass@1で精度が1.2%向上し、学習が進むにつれて学習率が最適化された兆候が見られました。しかし、大幅な精度向上を達成し、さまざまなハイパーパラメータを最適化するには、まだ課題が残っています。
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
Yuuitirou528 default
CS集会でお話した、通信技術のひとつである「変調」について解説した資料です。 https://x.com/vrc_cpu_science/status/1724784316738355560
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
浜松で開催されたJSAI2024(第38回)での発表.
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
Recently uploaded
(8)
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
Db unitを使って なれる! レガシーコードメンテナー
1.
DBUnitを使って なれる! レガシーコードメンテナー
『JUnit実践入門』写経・実践会 in 横浜 #4 @PoohSunny
2.
自己紹介 【@PoohSunny】
・㈱ヒューマンテクノロジーズ ・エンジニア ・最近のミッションはもっぱら 「テストのないレガシーコードにテストで 立ち向かう」 ・時として魔改造も厭わない黒魔術師
3.
今回のお話 DAOのテストではなく、 DBにアクセスして複数クラスのテストを実行 →レガシーコードでも幸せになろう!
4.
レガシーコード... サンプル(※フィクションです) public void
legacyMethod(HttpServletRequest request){ String code = (String) request.getAttribute("code"); TargetData data = new TargetDataDAO.getTargetData(code); Integer comppanyId = data.getCompanyId(); TargetCompanyData companyData = new TargetCompanyDAO. getTargetCompanyData(comppanyId); ...... //以下1000行
5.
レガシーコード... サンプル(※フィクションです)
引数が多かったり 重かったり public void legacyMethod(HttpServletRequest request){ String code = (String) request.getAttribute("code"); TargetData data = new TargetDataDAO.getTargetData(code); Integer comppanyId = data.getCompanyId(); TargetCompanyData companyData = new TargetCompanyDAO. getTargetCompanyData(comppanyId); ...... //以下1000行
6.
レガシーコード... サンプル(※フィクションです)
引数が多かったり 重かったり public void legacyMethod(HttpServletRequest request){ DBアクセスが 密結合だったり String code = (String) request.getAttribute("code"); TargetData data = new TargetDataDAO.getTargetData(code); Integer comppanyId = data.getCompanyId(); TargetCompanyData companyData = new TargetCompanyDAO. getTargetCompanyData(comppanyId); ...... //以下1000行
7.
レガシーコード... サンプル(※フィクションです)
引数が多かったり 重かったり public void legacyMethod(HttpServletRequest request){ DBアクセスが 密結合だったり String code = (String) request.getAttribute("code"); TargetData data = new TargetDataDAO.getTargetData(code); Integer comppanyId = data.getCompanyId(); TargetCompanyData companyData = new TargetCompanyDAO. 長かったり getTargetCompanyData(comppanyId); ...... //以下1000行
8.
レガシーコードに テストを書くときにハマルこと クラスが重すぎて そもそもテストが書けない (Mock使うのもむずい)
9.
対策1 スプラウトメソッド 不具合があった場合などに、その部分だけ 「メソッドの抽出」リファクタを実行 →そこにテストを書く <悩ましいポイント> ・カバレッジが上がってこない →開発者のモチベーションが上がりにくい ・既存動作の担保ができない →開発者の「不安」の解消ができない
10.
対策2 Seleniumで外から攻める まずはSeleniumでラップ →しかるのちにユニットテストを書く! <困ったポイント> 中がレガシー → 画面は沢山のパラメータ ・ブラックボックステストを安心して書けるようになる までは途方もない時間
11.
というわけでDBUnit DBUnitを使い ・大きなメソッド ・複数のクラス をまとめてテストする。 <工夫しなければならないポイント> ・DB接続先の変更→MockやDI ・データの準備→ツール化(もしくは根性)
12.
DBUnitを使って幸せになれた ・カバレッジ増加 →「戦ってる感」→モチベーション向上 ・過度なモック化、メソッドの抽出の防止 レガシーコードにも、テストがかける感じに。
13.
というわけで レガシーコードと戦うときは、 DBUnitで幸せになりましょう!
14.
おまけ:DBUnitでハマった! ・もしデータ形式でExcelを使うのなら... →テーブル名に気を付けるべし (あんなに長い名前のテーブルが あるだなんて...涙) ・H2DataBaseも使ってみた →当然だけど方言に注意 →私はTimeZoneのSet文(Postgres) で泣きました。
Download now