Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ScalaでもDBのテストをしよう
Search
Kazumune Katagiri
April 09, 2016
Technology
380
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ScalaでもDBのテストをしよう
DbUnit?現役ですよ!
Kazumune Katagiri
April 09, 2016
More Decks by Kazumune Katagiri
See All by Kazumune Katagiri
50歳目前開発者の AI との付き合い方
nemuzuka
0
39
AWS を使ったシステムのテスト方針 #jawsug #jawsug_niigataken #nds60
nemuzuka
2
3.1k
フリーランスで割と長くリモートでやってる僕が気をつけていること
nemuzuka
1
13k
Vue.jsから始めるDOMにデータを持たせないアプリケーション開発への第1歩
nemuzuka
1
4.7k
わたしがみんなにオススメするBetter JavaとしてのScala
nemuzuka
1
880
Other Decks in Technology
See All in Technology
GitHub Copilot 最新アップデート – 「一歩先」の実践活用術
moulongzhang
2
340
ルールやカスタム機能、どう活かす?ハンズオンで体感するIBM Bobの出力コントロール
muehara
1
160
中期計画、2回作ってみた ~業務委託と正社員、両方の視点から~
demaecan
1
750
AmazonRoute 53ではじめてのドメイン取得!HTTPS化までの道のりを整理してみた
usanchuu
3
140
"何を作るか"を任される エンジニアは、どう育つのか
yutaokafuji
1
680
On-behalf-of Token exchange with AgentCore Identity
hironobuiga
2
190
RAG を使わないという選択肢
tatsutaka
1
230
フロンティアAIのゲート化と地政学リスク
nagatsu
0
140
LLMにもCAP定理があるという話
harukasakihara
0
360
新しいVibe Codingと”自走”について
watany
6
320
失敗を経て、Harness Engineering で 大切にしたいことを考える / Learning from Failure: What Matters in Harness Engineering
bitkey
PRO
1
370
あなたの知らないPDFのアクセシビリティ
lycorptech_jp
PRO
0
190
Featured
See All Featured
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
62
44k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
610
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.1k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.7k
Designing Powerful Visuals for Engaging Learning
tmiket
1
410
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
170
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.5k
Bash Introduction
62gerente
615
220k
Discover your Explorer Soul
emna__ayadi
2
1.1k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
160
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
530
Transcript
ୈ47ճ ԬITٕज़ऀษڧձ ScalaͰDBͷςετ Λ͠Α͏ 2016/4/9 @nemuzuka
Έͳ͞Μɺςετͯ͠·͔͢ʁ
ݱ࣮ݫ͍͠… • εέδϡʔϧݫक(ࣄͰ͋Εঘߋ) • ߟ͑ΒΕΔશ෦ͷςετέʔεΛཏͯ͠ςε τΫϥεʹམͱ͜͠Ήͷʮਖ਼͍͠ʯ͚ΕͲ ͔͔࣌ؒΔ͠ɺςετΫϥεͷϝϯς ͔ʹͳΒͳ͍ ݶΒΕͨ࣌ؒͷதͰͬͯΔΑɺ ͱ͍͏τίϩ͕΄ͱΜͲͰʁ
Δ͖ॴ͚ͩ ͋·ΓखؒΛ͔͚ͣʹ ςετ͍ͨ͠…
ͦΜͳதͰDB(SQL)ͷςετɺ ͬͯ·͔͢ʁ
ׂʹ͋Θͳ͍…ʁ • ςετ͕Ͱ͖Δڥ͕ඞཁ • ଓઌΛςετ/։ൃ/ຊ൪ͰΓସ͑ΒΕΔΑ͏ͳΈ • ςετ࣮ߦʹ͕͔͔࣌ؒΓ͗͢Δ ʮSQLʹىҼ͢Δόάͷ݅ʯ͕ແࢹͰ͖ͳ͍ ɹͷͰ͋Ε࣮ࢪͨ͠΄͏͕ྑ͍͔͠Ε·ͤΜ
ͲΜͳύλʔϯΛςετ͢Δʁ • 1ςʔϒϧʹର͢ΔCRUD • ෳͷςʔϒϧΛ݁߹ͯ͠Ұཡʹදࣔ͢Δselect • ݁߹͕݅߹ͬͯͳ͍ͷऔΕͯ͜ͳ͍͜ͱ • ಈతʹݕࡧ͕݅มΘΔ߹Ͱظ͢Δσʔλ͕औΕΔ͜ͱ σʔλͷύλʔϯʹΑͬͯ
ఆ֎ͷ݁ՌΛฦ͍͢͠ͷͰςετ͖͢ ORMΛׂ͑Ѫͯ͠ྑ͍͔͠Εͳ͍
ʮ͡Ό͋ɺࠓճͷϓϩδΣΫτΓ·͔͢ʯ ͱݴΘΕͯ߄ͯͳ͍ҝʹ
DBΛͬͨςετͷྲྀΕ • ४උ • ୯ମςετ༻ͷεΩʔϚ/tableΛ༻ҙ(σʔλۭ) • ࣮ࢪ(ςετΫϥε) • 1. લఏ݅ͱͳΔσʔλΛొ
• 2. ࣮ࡍʹSQLΛൃߦͯ͠ςετ࣮ࢪɺ݁ՌΛ֬ೝ • 3. rollback(σʔλtableʹΒͳ͍)
લఏ݅ͱͳΔσʔλΛొ • DBΛͬͨςετΛ͢Δʹɺtableʹσʔλ͕ೖͬͯ ͍ͳ͍ͱSQLͰ݁Ռ͕औΕͣςετͱͯ͠Γཱͨͳ͍ • ͱݴ͑ɺtableͷલఏ݅Λຬͨͨ͢Ίʹɺ֤tableʹ ର͍͍ͯͪͪ͠InsertจΛॻ͘ͷ໘Ͱ͔ͬͨΔ͍ օ͞Μ͕͓͍ͷ։ൃݴޠɾFWͰָͰ͖ͯ·͔͢ʁ
ࢲɺScala / Skinny Framework • ScalaͷϑϧελοΫͳ WebΞϓϦέʔγϣϯ ։ൃϑϨʔϜϫʔΫ • ςετͷลΓखް͘
αϙʔτ
FactoryGirl • InsertจΛهड़͢Δ͜ͱແ͘ɺςετΫϥε͔Βલఏ݅ͷσʔλΛొ͢Δ͜ͱ͕Ͱ͖Δ • σʔλͷதʹγεςϜΛઃఆ • ొͨ͠id߲Λผtableͷ֎෦Ωʔͱͯ͠ઃఆ [ςετΫϥε] val company1
= FactoryGirl(Company).create() val country = FactoryGirl(Country, 'countryyy).create() val factory = FactoryGirl(Member).withVariables('countryId -> country.id) val member = factory.create('companyId -> company1.id, 'createdAt -> DateTime.now) [ઃఆϑΝΠϧ] countryyy { name="Japan" } member { countryId="#{countryId}" } company { name="FactoryGirl, Inc." } ઃఆϑΝΠϧΛݩʹσʔλΛొɻ ඞཁʹԠͯ͡ςετΫϥεଆͰઃఆ͢Δ
ϓϩάϥϜͰॻ͚Δͷخ͍͚͠Ͳ… • ςετσʔλΛ֬ೝ͢ΔࡍɺςετΫϥεΛݟͯɺͲ͏͍͏ͷ͕ೖ͍ͬͯ Δ͔Θ͔ΓͮΒ͍ • ෳͷtableΛ݁߹ͯ͠select͍ͯ͠ΔΑ͏ͳॲཧͷςετ • ४උσʔλͷొॲཧͰςετΫϥεͷେΛకΊͳ͍ʁϝϯςେมͦ͏… • ςετ༻ͷσʔλΛ20݅͘Β͍༻ҙ͍ͨ࣌͠
tableදܗࣜͰݟͨΓཧͰ͖ͨํ͕͏Ε͋͘͠Γ·ͤΜ͔ʁ
͜͏͍͏ͷͰɻ
ͱ͍͏͜ͱͰɺDbUnit • ExcelΛσʔλϑΝΠϧͱͯ͠ಡΈࠐΜͰɺલఏ ݅ͱͳΔtableͷঢ়ଶʹͯ͘͠ΕΔπʔϧ • ScalaͳͷͰɺJavaͷϥΠϒϥϦʹ؆୯ΞΫηε
ExcelϑΝΠϧͷϧʔϧ • γʔτ໊ˠtable໊ • 1ߦˠΧϥϜ໊ • 2ߦҎ߱σʔλ ɾγʔτ໊ͷ্ݶ31จࣈˠtable໊͕31จࣈΛ͑Δͱ...Ξτ ɾࠨͷγʔτ͔Βॱʹొ͍͖ͯ͠·͢ɻ ɾxlsxܗࣜͰͰ͖·͢
demo.
Ͷɺ؆୯ͦ͏Ͱ͠ΐʁ • ScalaTestΛ͏͜ͱͰRSpecͷΑ͏ʹॻ͚Δ • AutoRollback traitΛ༻͢Δ͜ͱͰςετ࣮ߦޙࣗಈͰrollback͢Δ • ෳ݅औಘ͢ΔSQLͷςετͷ߹ɺorder by Λ͚ͭͯৗʹಉ͡ॱ൪ͰऔಘͰ͖ΔΑ͏ʹҰ
• ֎෦ΩʔΛ͍ͬͯΔ࣌ɺσʔλͷొॱʹҙ • ςʔϒϧΛઌʹొ • ExcelͷσʔλಡΈࠐΈͰΤϥʔʹͳΔ࣌ • จࣈྻܕͷΧϥϜͳͷʹɺηϧ͕ / ʹͳͬͯΔ͔ • ηϧΛจࣈྻܕʹ͢Δͱ͏·͘ߦ͘͜ͱ͕ଟ͍
·ͱΊ • DB෦ͷςετࣗಈԽͨ͠ํ͕ྑ͍ͱࢥ͍·͢ • ςετσʔλΛExcelͰཧ͢ΔਓؾΛ্͍͖͛ͯ ͍ͨ #nds24 http://www.slideshare.net/kkatagiri/nds24-11327909 ࠓճͷιʔείʔυ https://github.com/nemuzuka/skinny-db-test