Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
どうしようJUnit5
Search
irof
December 03, 2016
Programming
0
6.4k
どうしようJUnit5
JJUG CCC 2016 Fall
irof
December 03, 2016
Tweet
Share
More Decks by irof
See All by irof
視座の上げ方
irof
1
55
アーキテクチャと考える迷子にならない開発者テスト
irof
9
3.7k
技術的負債の正体を知って向き合う
irof
0
670
関ジャバと言う場
irof
0
180
型で語るカタ
irof
2
1.5k
つよそうにふるまい、つよい成果を出すのなら、つよいのかもしれない
irof
1
400
複数アプリケーションを育てていくための共通化戦略
irof
9
5.2k
SpringBootにおけるオブザーバビリティのなにか
irof
1
1.2k
Javaアプリケーションモニタリングの基本
irof
7
2.8k
Other Decks in Programming
See All in Programming
組み合わせ爆発にのまれない - 責務分割 x テスト
halhorn
1
160
宅宅自以為的浪漫:跟 AI 一起為自己辦的研討會寫一個售票系統
eddie
0
520
JETLS.jl ─ A New Language Server for Julia
abap34
2
440
Denoのセキュリティに関する仕組みの紹介 (toranoana.deno #23)
uki00a
0
150
0→1 フロントエンド開発 Tips🚀 #レバテックMeetup
bengo4com
0
310
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
270
C-Shared Buildで突破するAI Agent バックテストの壁
po3rin
0
410
Graviton と Nitro と私
maroon1st
0
130
Kotlin Multiplatform Meetup - Compose Multiplatform 외부 의존성 아키텍처 설계부터 운영까지
wisemuji
0
110
Go コードベースの構成と AI コンテキスト定義
andpad
0
130
TestingOsaka6_Ozono
o3
0
170
大規模Cloud Native環境におけるFalcoの運用
owlinux1000
0
180
Featured
See All Featured
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
0
42
It's Worth the Effort
3n
187
29k
A designer walks into a library…
pauljervisheath
210
24k
YesSQL, Process and Tooling at Scale
rocio
174
15k
4 Signs Your Business is Dying
shpigford
186
22k
The SEO identity crisis: Don't let AI make you average
varn
0
35
Navigating Weather and Climate Data
rabernat
0
49
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
Optimising Largest Contentful Paint
csswizardry
37
3.5k
GitHub's CSS Performance
jonrohan
1032
470k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
310
Crafting Experiences
bethany
0
21
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 ͰΑͦ͞͏ɻ +%,ରԠͯ͠Δ͠ɻ
ϑϨʔϜϫʔΫϥΠϒϥϦͷબ ఆʹؔΘΔػձଟ͘ͳ͍ɻ ܾ·ͬͨͷ͕͋ͬͯɺݕূ͞ ΕͨͷҎ֎͑ͳ͍ͱ͜Ζ ݁ߏଟ͍ɻ ςετ༻ͷϥΠϒϥϦ·ͩνϟ Ϩϯδ͍͢͠ྖҬɻ खΛग़͍͢͠ͷʹͳͬͯΔ ͱࢥ͍·͢ɻ