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
0
6.3k
どうしようJUnit5
JJUG CCC 2016 Fall
irof
December 03, 2016
Tweet
Share
More Decks by irof
See All by irof
SpringBoot3.4の構造化ログ #kanjava
irof
2
1k
自分ひとりから始められる生産性向上の取り組み #でぃーぷらすオオサカ
irof
8
3.1k
役立つログに取り組もう
irof
33
12k
Javaのリリースモデル変更 その後
irof
0
100
プールにゆこう
irof
2
330
Javaマルチバージョンビルディング
irof
1
410
データ/データベースパターン
irof
0
190
勉強会で話すハードルを下げてみる
irof
0
390
Gatlingによる負荷テスト入門
irof
6
2.7k
Other Decks in Programming
See All in Programming
CDK開発におけるコーディング規約の運用
yamanashi_ren01
2
140
『GO』アプリ データ基盤のログ収集システムコスト削減
mot_techtalk
0
130
技術を根付かせる / How to make technology take root
kubode
1
250
CSS Linter による Baseline サポートの仕組み
ryo_manba
1
110
なぜイベント駆動が必要なのか - CQRS/ESで解く複雑系システムの課題 -
j5ik2o
12
4.1k
富山発の個人開発サービスで日本中の学校の業務を改善した話
krpk1900
5
390
法律の脱レガシーに学ぶフロントエンド刷新
oguemon
5
740
GoとPHPのインターフェイスの違い
shimabox
2
190
データの整合性を保つ非同期処理アーキテクチャパターン / Async Architecture Patterns
mokuo
48
17k
責務と認知負荷を整える! 抽象レベルを意識した関心の分離
yahiru
7
680
GitHub Actions × RAGでコードレビューの検証の結果
sho_000
0
270
Unity Android XR入門
sakutama_11
0
160
Featured
See All Featured
Typedesign – Prime Four
hannesfritz
40
2.5k
Measuring & Analyzing Core Web Vitals
bluesmoon
6
240
Mobile First: as difficult as doing things right
swwweet
223
9.3k
The Cost Of JavaScript in 2023
addyosmani
47
7.3k
Code Review Best Practice
trishagee
67
18k
Thoughts on Productivity
jonyablonski
69
4.5k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
114
50k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
GraphQLの誤解/rethinking-graphql
sonatard
68
10k
Building Flexible Design Systems
yeseniaperezcruz
328
38k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
46
2.3k
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 ͰΑͦ͞͏ɻ +%,ରԠͯ͠Δ͠ɻ
ϑϨʔϜϫʔΫϥΠϒϥϦͷબ ఆʹؔΘΔػձଟ͘ͳ͍ɻ ܾ·ͬͨͷ͕͋ͬͯɺݕূ͞ ΕͨͷҎ֎͑ͳ͍ͱ͜Ζ ݁ߏଟ͍ɻ ςετ༻ͷϥΠϒϥϦ·ͩνϟ Ϩϯδ͍͢͠ྖҬɻ खΛग़͍͢͠ͷʹͳͬͯΔ ͱࢥ͍·͢ɻ