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
どうしようJUnit5
Search
irof
December 03, 2016
Programming
6.6k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
どうしようJUnit5
JJUG CCC 2016 Fall
irof
December 03, 2016
More Decks by irof
See All by irof
ふつうのFeature Flag実践入門
irof
8
4.7k
視座の上げ方
irof
1
130
アーキテクチャと考える迷子にならない開発者テスト
irof
10
4.4k
技術的負債の正体を知って向き合う
irof
0
1.1k
関ジャバと言う場
irof
0
380
型で語るカタ
irof
2
1.7k
つよそうにふるまい、つよい成果を出すのなら、つよいのかもしれない
irof
1
520
複数アプリケーションを育てていくための共通化戦略
irof
9
6.8k
SpringBootにおけるオブザーバビリティのなにか
irof
1
1.5k
Other Decks in Programming
See All in Programming
GDG Korea Android: 2026 I/O Extended ~ What's new in Android development tools
pluu
0
220
改善しないと、タスクが回らない。 “てんこ盛りポジション” を引き継いだ情シスの、入社3ヶ月の業務改善録
krm963
0
260
生成AI導入の「期待外れ」を乗り越える ー 開発フロー改革が目指す、真の組織変革
starfish719
0
4.2k
人間の目はかわらない、だからJPEGは30年もつ
yuzneri
12
18k
AI Readyの正体はデータマネジメントだ メダリオン2.0の最前線
freee
PRO
0
180
komatsuna「分散システムにおけるバグ分析手法」
komatsunaqa
0
250
AWS DevOps AgentのAzure接続機能を検証して見えた活用法/Use Cases Verified for the AWS DevOps Agent's Azure Connectivity Feature
masakiokuda
1
230
Japan Community Day at Kubecon + CloudNativeCon Japan 2026: Learning Container Privilege Control by Building My Own Low-Level Container Runtime
ternbusty
1
150
TSX の <Hoge<Fuga>> という構文に驚いた話 / tsx-type-argument-syntax
kanaru0928
0
210
AWS CDK を「作」ってみた 〜フルスクラッチで見えた CDK の裏側〜 / aws-cdk-from-scratch
gotok365
3
2.8k
SlackアプリとLambdaの 連携を構築した話
pawn_4_s
1
110
琵琶湖の水は止められてもNet--HTTPのリトライは止められない / You might be able to stop the water flow of Lake Biwa but you can't stop Net::HTTP retries
luccafort
PRO
0
650
Featured
See All Featured
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.1k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.7k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.1k
Chasing Engaging Ingredients in Design
codingconduct
0
260
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.8k
The SEO Collaboration Effect
kristinabergwall1
1
520
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4.2k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.4k
Navigating Team Friction
lara
192
16k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
200
Transcript
@irof Ͳ͏͠Α͏+6OJU 5 ++6($$$'BMM DDD@G
ηογϣϯ֓ཁ ϦϦʔεؒۙͷ+6OJUɻ +6OJUΛ༻͍ͯ͠Δํଟ͍͔ͱ ࢥ͍·͕͢ɺ࣍όʔδϣϯͷԻ͕ฉ ͖͑ͯ͜·ͨ͠ɻ ݱঢ়ҡ͔࣋Ҡߦ͔ͳͲɺʮͲ͏͠Α͏ʯ ͱࢥ͍ͬͯΔਓଟ͍Ͱ͠ΐ͏ɻࢲ ͦͷҰਓͰ͢ɻ ͦΜͳΘ͚ͰɺͲ͏͠Α͏͔ߟ͑Δࡐ ྉΛूΊͯͦ͏ͱࢥ͍·͢ɻ
͍͘Β͔ͷҙ +6OJU·ͩϦϦʔε͞Ε͍ͯ· ͤΜɻมΘΓ·͢ɻ ࣮Ͱ͍ͬͯ·ͤΜɻ ͭ·ΓໝηογϣϯͰ͢ɻ ଞͷ෦ʹߦ͜͏ɻ
͜ͷεϥΠυͰ ༻͍ͯ͠Δόʔδϣϯ +BWB@ +6OJU. (SBEMF +FOLJOT
ϩΰ
Ͳ͏͠Α͏ ͍·͙͢+6OJUΛ͏ʁ +6OJU͔Β+6OJUʹΓ͑Δʁ ৽͘͠+6OJU͏ͷʁ +6OJU͏࣌ʹࠔΔ͜ͱʁ
͑ͳΜͯͳ͍ͷͰ +6OJU . Λઆ໌͠·͢ ϝϦοτσϝϦοτͱ͔ ͕࣌ؒ͋Ε͜ͷล͠·͢ +6OJUͰށ͍ͦ͏ͳͱ͜Ζ +6OJU͔ΒͷΓ͑ੋඇ
+6OJUͷݱঢ়
. .͔͍ͪ͏ͪ .ͦͷ͏ͪ ("2༧ఆ +%,ʹ͋ΘͤΔײ͔͡ͳʁ
.͕Ͱ͢
+6OJUͱͷޓੑ
ͳ͍
ޓੑʹ͍ͭͯ ผͷϑϨʔϜϫʔΫͰ͢ ผͳͷͰޓͳΜͯ͋ΔΘ͚ ͳ͍Ͱ͢ ʮόʔδϣϯΞοϓͯͦ͠ͷ·· ͑Δʯ͋Γ·ͤΜ
ͳΜͰผͳͷʁ
ผͳͷͰڞଘͰ͖Δ BSUJGBDU*EHSPVQ*E͕ҧ͏ ύοέʔδҧ͏ JUnit 5 PSHKVOJUKVQJUFS JUnit 4 PSHKVOJU JUnit
3 KVOJUGSBNFXPSL
ڞଘʁ +6OJU +6OJU1MBUGPSN Ͱ+6OJUΛ ಈ࡞ͤ͞Δ +6OJU 3VOOFS Ͱ+6OJUͷςετ Λ࣮ߦ͢Δ +6OJUͷςετʹ+6OJUͷ3VMFΛ
ద༻͢Δ ʜʜͳͲ͕ՄೳʹͳΔ
ߏΛோΊͯΈΔ
+6OJU +6OJU1MBUGPSN +6OJU+VQJUFS +6OJU7JOUBHF
+6OJU1MBUGPSN KVOJUQMBUGPSN DPNNPOT KVOJUQMBUGPSN DPOTPMF KVOJUQMBUGPSN SVOOFS KVOJUQMBUGPSN HSBEMFQMVHJO KVOJUQMBUGPSN
MBVODIFS KVOJUQMBUGPSN FOHJOF KVOJUQMBUGPSN TVSFpSFQSPWJEFS
+6OJU+VQJUFS KVOJUKVQJUFSBQJ KVOJUKVQJUFS FOHJOF KVOJUQMBUGPSN DPNNPOT KVOJUQMBUGPSN FOHJOF KVOJUKVQJUFS NJHSBUJPOTVQQPSU
+6OJU7JOUBHF KVOJUWJOUBHF FOHJOF KVOJUQMBUGPSN FOHJOF KVOJUKVOJU
શମ KVOJUQMBUGPSN DPNNPOT KVOJUQMBUGPSNDPOTPMF KVOJUQMBUGPSNSVOOFS KVOJUQMBUGPSNHSBEMF QMVHJO KVOJUQMBUGPSNMBVODIFS KVOJUQMBUGPSNFOHJOF KVOJUQMBUGPSNTVSFpSF
QSPWJEFS KVOJUWJOUBHFFOHJOF KVOJUKVQJUFSBQJ KVOJUKVQJUFSFOHJOF KVOJUKVOJU KVOJUKVQJUFSNJHSBUJPO TVQQPSU
%FQFOEFODZ%JBHSBN .ͷ6TFS(VJEFͰՃ͞Εͨਤ
ͬͯΈΔ
+6OJUˠ+6OJU KVOJUKVOJU PSHKVOJUKVQJUFSKVOJUKVQJUFSBQJ. PSHKVOJUKVQJUFSKVOJUKVQJUFSFOHJOF. FOHJOF࣮ߦ࣌ ͚ͩͰΑ͍
ࢀߟϏϧυπʔϧͷઃఆ IUUQTHJUIVCDPNKVOJUUFBN KVOJUTBNQMFT
ςετίʔυ
ඞਢͷมߋ !5FTUͷύοέʔδ͕ҧ͏ PSHKVOJU5FTU PSHKVOJUKVQJUFSBQJ5FTU
ςετίʔυ PSHKVOJUKVQJUFSBQJ5FTU ݟͨಉ͡Ͱ͢
ҙͷมߋ ΫϥεQVCMJDͰͳͯ͘Α͍ ϝιουQVCMJDͰͳͯ͘Α͍ ৽͍͠Ξαʔγϣϯ"1*
ςετίʔυ QVCMJD͡Όͳͯ͘Α͍ QVCMJD͡Όͳͯ͘Α͍ PSHKVOJUKVQJUFSBQJ"TTFSUJPOT ݟͨಉ͡Ͱ͢
୯७ͳΒύοέʔδมߋͰࡁΉ
ϚΠάϨʔγϣϯʹ͍ͭͯ 6TFS(VJEFʹ݁ߏॻ͔ΕͯΔ ͨͩ͠ɺສೳͳखॱͰͳ͍
ςετͷ࣮ߦ
*OUFMMJ+*%&" *OUFMMJ+*%&"ͰରԠ͞Εͨ
.ʹͨ͠Β *OUFMMJ+*%&"͕.ΛͬͯΔ͔Βɻ KVOJUQMBUGPSNMBVODIFS.Λ͑0,
(SBEMF UFTU$MBTT UFTU KVOJU1MBUGPSN5FTU Ճ͞ΕΔλεΫ ແޮԽ͞ΕΔλεΫ ੍ޚՄೳ KVOJUQMBUGPSNHSBEMFQMVHJOͷग़൪
࣮ߦ݁Ռ͜Μͳײ͡ )5.-ͷSFQPSUࠓͷͱ͜Ζग़·ͤΜ
+FOLJOT (SBEMF +FOLJOTʹ+6OJU݁ՌͷऩूΛͤͨ݁͞Ռ
+FOLJOT (SBEMF.BWFO͕ಈ͔͘Βͳ͍ ݁ՌͷूܭͰ͖Δ 9.-ͷߏͦͷ·· !%JTQMBZ/BNFʹະରԠ ͞Ε͚ͨͩͩ͠
൪֎+6OJUͰಈ͖㽂 6TFS(VJEFࢀর
+6OJUͰ+6OJUΛಈ͔͢ !3VO8JUI +6OJU1MBUGPSNDMBTT
ཧ۶্࣮ࡍಈ͚͘Ͳ ʮڞଘՄೳʯͬͯݴͬͨͭɻ +6OJUͷ্Ͱ+6OJUΛಈ͔ͨ͠Γɺ +6OJUͷ্Ͱ+6OJUΛಈ͔ͨ͠ ΓɺΓ͗͢Δͱ͍͍ײ͡ʹࠞཚ Ͱ͖ͦ͏ɻ
ػೳͷհ
Ұ௨Γͷհͤͣɺ+6OJUͱͷ ൺֱΛத৺ʹ͠·͢ ػೳશମ6TFS(VJEFʹ͓ͤ ेͳใ͕͋Δ͚Ͳɺ ͦΜͳϘϦϡʔϜͳ͍Ͱ͢ɻ
+6OJUͱͷ"1*ൺֱ
"1*ൺֱͳͷͰ +6OJU+VQJUFSͷ KVOJUKVQJUFSBQJ +6OJU1MBUGPSN+6OJU7JOUBHFͷ ग़൪ͳ͍Ͱ͢
Ξϊςʔγϣϯ Ξαʔγϣϯ ֦ுϞσϧ ߏԽ ύϥϝʔλʔԽ Ξ ϊςʔ γϣϯ Ξαʔ γϣϯ
֦ுϞ σϧ ߏԽ ύϥ ϝʔ λʔԽ
Ξϊςʔγϣϯ Ξ ϊςʔ γϣϯ Ξαʔ γϣϯ ֦ுϞ σϧ ߏԽ ύϥ
ϝʔ λʔԽ
͍͍ͩͨͦͷ·· JUnit 4 JUnit 5 !5FTU !5FTU !#FGPSF !#FGPSF&BDI !"GUFS
!"GUFS&BDI !#FGPSF$MBTT !#FGPSF"MM !"GUFS$MBTT !"GUFS"MM !*HOPSF !%JTBCMFE
ͳ͘ͳͬͨ JUnit 4 ͤͭΊ͍ !3VO8JUI ςετͷ࣮ߦͷ ํΛม͑Δͭ !3VMF !$MBTT3VMF ςετ࣮ߦ࣌ʹ͋
Ε͜Ε͢Δͭ !'JY.FUIPE0SEFS ςετ࣮ߦॱΛݻ ఆ͢Δͭ ࣮ߦॱࢦఆ.ͰԿ͔ೖΔ༧ఆ
PSEFSJOHϥϕϧΛݟ͍ͯͩ͘͞
৽͍͠ͷ JUnit 5 ͤͭΊ͍ !/FTUFE &ODMPTFEʹࣅͨͷ !5BH $BUFHPSZʹࣅͨͷ !%JTQMBZ/BNF έʔε໊Λࢦఆ͢Δ
!5FTU'BDUPSZ ಈతςετͰ͏ !&YUFOE8JUI ֦ுͰ͏
Ξαʔγϣϯ Ξ ϊςʔ γϣϯ Ξαʔ γϣϯ ֦ுϞ σϧ ߏԽ ύϥ
ϝʔ λʔԽ
Ξαʔγϣϯ͚͍͢ ςετಈ ͔͢ࢠ ςετ ςετ͞ΕΔࢠ ڥ Ξαʔγϣϯ͜͜
ຯͳมߋ ഇࢭ BTTFSU5IBU Ճ -BNCEBΛ͏ͷ BTTFSU"MM BTTFSU5ISPXT BTTFSU5JNFPVU 1SFFNQUJWFMZ
ຯͳมߋ ഇࢭ BTTFSU5IBU Ճ -BNCEBΛ͏ͷ BTTFSU"MM BTTFSU5ISPXT BTTFSU5JNFPVU 1SFFNQUJWFMZ
Ҿ͖ଓ͖͍͍ͨ߹ )BNDSFTUΛ͍·͠ΐ͏
ຯͳมߋ ഇࢭ BTTFSU5IBU Ճ -BNCEBΛ͏ͷ BTTFSU"MM BTTFSU5ISPXT BTTFSU5JNFPVU 1SFFNQUJWFMZ
!5FTUͷʹ ॻ͍ͯͨͭ
"TTFSU+ಡΜͰ͍ͩ͘͞ WPM ൃച
֦ுϞσϧ Ξ ϊςʔ γϣϯ Ξαʔ γϣϯ ֦ுϞ σϧ ߏԽ ύϥ
ϝʔ λʔԽ
֦ுํ๏͕ҰຊԽ 3VOOFS &YUFOTJPO 3VMF
&YUFOTJPOͷ͍ํ &YUFOTJPOͷ࣮ΫϥεΛ࡞ͬͯʔ !&YUFOE8JUIͰࢦఆ͢Δ
&YUFOTJPOࡶײ ֦ுϙΠϯτʹԠͨ͡ΠϯλϑΣʔ εΛ࣮ͯ͠࡞Δ 3VMFΛγϯϓϧʹͨ͠ͷ ख৮Γྑ͍ 3VMFͷΑ͏ͳສೳײͳ͍
࣮ΛΈͯΈΑ͏ .PDLJUP&YUFOTJPO KVOJUUFBNʹΑΔ 4QSJOH&YUFOTJPO 4QSJOH'SBNFXPSLʹΑΔ TQSJOHUFTUʹೖΓͦ͏
͋·Γ৮Εͯͳ͍ͷͰ ৄ͍ͦ͠ͷ͏ͪɻ
ߏԽ Ξ ϊςʔ γϣϯ Ξαʔ γϣϯ ֦ுϞ σϧ ߏԽ ύϥ
ϝʔ λʔԽ
ςετίʔυͷߏԽ !&ODMPTFE !/FTUFE
&ODMPTFE
/FTUFE
&ODMPTFEWT/FTUFE /FTUFE͕֨ஈʹΑ͍ TUBUJDෆཁʢඇTUBUJDʣ !#FGPSF&BDIͱ͔ॻ͚Δ !5FTUͱฒͯॻ͚Δ
ύϥϝʔλʔԽ Ξ ϊςʔ γϣϯ Ξαʔ γϣϯ ֦ுϞ σϧ ߏԽ ύϥ
ϝʔ λʔԽ
ύϥϝʔλʔԽ 1BSBNFUFSJ[FE %ZOBNJD5FTU 5IFPSZ
%ZOBNJD5FTU
%ZOBNJD5FTU !5FTU'BDUPSZΛ͚ͭΔ %ZOBNJD5FTUͷΠϯελϯεΛؚΉ 4USFBN$PMMFDUJPOͳͲΛฦ͢ ແݶετϦʔϜॲཧͰ͖Δ
+6OJUʹͳ͍ػೳ ςετϨϙʔτ༻ͷ໊લ͕͚ͭΒ ΕΔ!%JTQMBZ/BNF ϝιουίϯετϥΫλ͕ҾΛ ड͚औΕΔ γφϦΦςετ͚ͷ֦ுʢະʣ
ϝϦοτσϝϦοτ
ϝϦοτ ίʔυ͕͘ͳΔ ֦ு͕Լ͕Δ ʢ৽ػೳʣ σϝϦοτ طଘͷ3VOOFS3VMF͕͑ͳ͍ *%&ͷରԠ
ࢀߟ3VMFΛಈ͔͢&YUFOTJPO
3VMFΛಈ͔͢&YUFOTJPO ಛఆͷ3VMFʢ͓Αͼ֦ுʣݶఆ &YUFSOBM3FTPVSDF 7FSJGJFS &YQFDUFE&YDFQUJPO ͱݴ͑ڧྗ ͦͷؾʹͳΕଞՄೳ͔
ϝϦοτ༏ ଟ͘ͷσϝϦοτϦϦʔε͞Ε Εղܾ͞ΕΔ طଘͷ֦ுࢿ࢈͕͋ΔͳΒແཧʹ Γ͑ͳͯ͘Α͍ ֦ு͕Լ͕Δͷେ͖͍
+6OJUͰށ͍ͦ͏ ͳͱ͜Ζ
ಈ͔ͳ͍ܥ !5FTUॻ͍ͯΔͷʹಈ͔ͳ͍ +6OJUͷΛͬͯΔ͔ʁ !/FTUFE͕ಈ͔ͳ͍ TUBUJDʹͪ͠ΌͬͨΒμϝɻ
ݟ͔ͭΒͳ͍ܥ !5FTU FYQFDUFE ͕ͳ͍ ৽͍͠ΞαʔγϣϯͰɻ !5FTU UJNFPVU ͕ͳ͍ ৽͍͠ΞαʔγϣϯͰɻ BTTFSU5IBU͕ߦํෆ໌
IBNDSFTUೖΕΕ͍͍Αɻ
ڥܥ ϏϧυπʔϧपΓͰӠʑ ϦϦʔε͞ΕΕ͜ͳΕΔ͔ͱɻ *%&पΓͰӠʑ ϦϦʔε͞ΕΕ͜ͳΕΔ͔ͱɻ
ॏཁ ݴͬͯͨॻ͍ͯͨͷͱ ڍಈ͕ҧ͏ ใόʔδϣϯΛ֬ ೝ͠·͠ΐ͏ɻ
ࡶײ
+6OJU lୈࡾͷγεςϜzͬΆ͍
ݱࡏ࡞͍ͬͯΔγεςϜͷςετ Λ+6OJUͰߦ͏ͷͳ͍ɻ ͢Ͱʹ+6OJUҎલͰ࡞͍ͬͯΔς ετΛஔ͖͑Δඞཁͳ͍ɻ ϦϦʔεޙʹ৽͘͠࡞ΔͳΒ+6OJU ͰΑͦ͞͏ɻ +%,ରԠͯ͠Δ͠ɻ
ϑϨʔϜϫʔΫϥΠϒϥϦͷબ ఆʹؔΘΔػձଟ͘ͳ͍ɻ ܾ·ͬͨͷ͕͋ͬͯɺݕূ͞ ΕͨͷҎ֎͑ͳ͍ͱ͜Ζ ݁ߏଟ͍ɻ ςετ༻ͷϥΠϒϥϦ·ͩνϟ Ϩϯδ͍͢͠ྖҬɻ खΛग़͍͢͠ͷʹͳͬͯΔ ͱࢥ͍·͢ɻ