Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
ScalaでもDBのテストをしよう
Search
Kazumune Katagiri
April 09, 2016
Technology
390
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
58
AWS を使ったシステムのテスト方針 #jawsug #jawsug_niigataken #nds60
nemuzuka
2
3.2k
フリーランスで割と長くリモートでやってる僕が気をつけていること
nemuzuka
1
13k
Vue.jsから始めるDOMにデータを持たせないアプリケーション開発への第1歩
nemuzuka
1
4.7k
わたしがみんなにオススメするBetter JavaとしてのScala
nemuzuka
1
890
Other Decks in Technology
See All in Technology
Claude の新機能を、 出た日に触って社内に届けるまで
rfdnxbro
1
190
Temporal 最高!でも改めて「日付」について調べたら人類の負債すぎる件
riyaamemiya
0
200
Local CI × GitHub Actions
gogutan
3
230
実践!Cloud Run ハンズオン!! / Cloud Run handson
y0hgi
2
300
M5Stackで作る BLEマウス GPSログの世界
tomokusaba
PRO
0
440
オントロジーって 結局なにもの? AI エージェントに「意味」を渡す知識設計の話
greenmidori
0
240
Tofu-Controller lightning talk @ Containerday 2026
gionn
0
120
AI コーディングと人間の認知スループット / CTO Night & Day 2026 Morning Session / AI Coding and Human Cognitive Throughput
prog893
5
1.3k
QA4AI 2026-Oct 生成AI時代の品質保証
tokuty
1
900
FinOps Agentが生んだ技術負債:コスト自動調査の落とし穴と解消までの道のり
oasis1994liveforever
2
160
ブラウザとサーバーから考えるAI時代のフロントエンド監視
shogo4131
3
1k
ソフトウェア ファクトリー - 再現性のあるソフトウェアの工場づくり / Software factory
iktakahiro
7
5.1k
Featured
See All Featured
Un-Boring Meetings
codingconduct
0
460
RailsConf 2023
tenderlove
30
1.6k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.6k
Fireside Chat
paigeccino
43
4.1k
Google's AI Overviews - The New Search
badams
0
1.6k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
430
Faster Mobile Websites
deanohume
310
32k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.3k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.4k
GitHub's CSS Performance
jonrohan
1033
470k
What's in a price? How to price your products and services
michaelherold
247
13k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
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