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
JUnit 5の拡張機能を完全にマスターした
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
irof
September 19, 2019
Technology
2.9k
1
Share
JUnit 5の拡張機能を完全にマスターした
2019-09-19T19:00 関ジャバ'19 9月度のセッション資料です。
https://kanjava.connpass.com/event/141792/
irof
September 19, 2019
More Decks by irof
See All by irof
視座の上げ方
irof
1
100
アーキテクチャと考える迷子にならない開発者テスト
irof
10
4.2k
技術的負債の正体を知って向き合う
irof
0
980
関ジャバと言う場
irof
0
300
型で語るカタ
irof
2
1.6k
つよそうにふるまい、つよい成果を出すのなら、つよいのかもしれない
irof
1
480
複数アプリケーションを育てていくための共通化戦略
irof
9
6k
SpringBootにおけるオブザーバビリティのなにか
irof
1
1.4k
Javaアプリケーションモニタリングの基本
irof
7
2.9k
Other Decks in Technology
See All in Technology
AI時代に、 データアナリストがデータエンジニアに異動して
jackojacko_
0
1.1k
続 運用改善、不都合な真実 〜 物理制約のない運用改善はほとんど無価値 / 20260518-ssmjp-kaizen-no-value-without-physical-constraints
opelab
2
310
React Compiler導入から21ヶ月、いま始めるならこうやる
astatsuya
2
290
TSKaigi 2026 - enumよ、さようなら
teamlab
PRO
2
260
ジュニアエンジニアはSREとどう向き合うべきか
nrinetcom
PRO
0
100
JTCでRedmine利用者2700人を実現した手法 第二部
nobuonakamura
0
150
React Compiler導入の効果と運用の工夫
kakehashi
PRO
3
300
Swift Sequence の便利 API 再発見
treastrain
1
290
【禁断】Obsidianの第二の脳に「知の巨人」と呼ばれた師匠の脳をロードしてみた
nagatsu
0
2.3k
実例から学ぶ GuardDuty(SSH BruteForce)調査の全体フローと勘所【SecurityJAWS】
cscengineer
PRO
0
180
ECSのTerraformモジュールにコントリビュートした話
harukasakihara
0
270
AWS運用におけるAI Agent活用術 / JAWS-UG 神戸 #11 LT大会
genda
1
320
Featured
See All Featured
KATA
mclloyd
PRO
35
15k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.3k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
52k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.8k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
1.1k
My Coaching Mixtape
mlcsv
0
130
Are puppies a ranking factor?
jonoalderson
1
3.4k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
330
Large-scale JavaScript Application Architecture
addyosmani
515
110k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
350
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Transcript
+6OJUͷ֦ுػೳΛ શʹϚελʔͨ͌͠ 5 ؔδϟό݄!JSPG #PU8%ਲ͍Ͱ·ͩΫϦΞͰ͖ͯͳ͍ɻ
͓ॻ͖ ࠷ۙͷ+6OJU &YUFOTJPOͷ۩ମྫ &YUFOTJPOͷԼࢧ͑ &YUFOTJPOͷ࡞Γํ
͝ҙ +6OJU ਤ*OUFSOBM&YQFSJNFOUBMͳ ͲΛؚΈ·͢ɻ
࠷ۙͷ+6OJU ϦϦʔεޙͷػೳෆظൈ͚ɺ ػೳతʹམͪண͍͖ͯͨɻ
όʔδϣϯΛோΊΔ w ฒྻ࣮ߦ w ඪ४ग़ྗͷΩϟϓνϟ w
ಈతςετ w !5FNQ%JS w 5FTU8BUDIFS w ج൫։ൃऀ͚"1*ॆ࣮ w !5JNFPVU w ֦ுϙΠϯτͭ w NPEVMFରԠ ϚΠΫϩόʔδϣϯόάϑΟοΫεɻ
Ϟδϡʔϧؔ࿈ w WJOUBHFͱMBVODIFSपΓলུɻίʔυॻ͘ͱ͖ʹग़ͯ͘Δͷ͚ͩɻ w ·Ͱ6TFS(VJEFʹ͜ͷਤ͋ͬͨΜ͚ͩͲɺ͔Βফ͑ͨɻͳ͔ͥΒͳ͍ɻ
+6OJU࣮༻ʹ͑Δ͔ ·ͬͨ͘ͳ͍ɻ
&YUFOTJPOͷ۩ମྫ ͍͔ͭ͘հ͠·͢ɻ Կ͕Ͱ͖Δ͔งғؾ͕Θ͔Ε͍͍ͳͱɻ
&YUFOTJPO +6OJU+VQJUFSͷ֦ு 3VOOFS3VMFͷޙܧ +6OJU1MBUGPSNͷ֦ுͰͳ͍
ຊՈ w &YUFOTJPOͷొෆཁɻউखʹಈ͘ɻʢޙͰग़ͯ͘Δ%&'"6-5@&95&/4*0/4ʣ
+6OJUඪ४ͷ֦ு Ұ෦ 5JNFPVU&YUFOTJPO 5FNQ%JSFDUPSZ FYQU %JTBCMFE$POEJUJPO 1BSBNFUFSJ[FE5FTU&YUFOTJPO
5FTU*OGP1BSBNFUFS3FTPMWFS
5JNFPVU&YUFOTJPO @Timeout(value = 3, unit = TimeUnit.MILLISECONDS) public class SampleTimeout
{ @Test void test() throws Exception { TimeUnit.MILLISECONDS.sleep(5); } } w λΠϜΞτʢ໓ଟʹΘͳ͍ʣ
5FNQ%JSFDUPSZ public class SampleTempDir { @TempDir Path tempDirPath; @Test void
test() { System.out.println(tempDirPath); } } w !5FNQ%JSͳϑΟʔϧυύϥϝʔλ͕͋ͬͨΒ04ͷUFNQEJSʹσΟϨΫτϦΛ࡞ͬͯ 1BUIΛηοτͯ͘͠ΕΔɻ w KVOJUQJPOFFSʹ͋ͬͨͷ͕ຊՈʹऔΓࠐ·Εͨɻʢ·ͩ&91&3*.&/5"-͚ͩͲʣ
αʔυύʔςΟ w ཁ&YUFOTJPOͷొɻ
4QSJOH&YUFOTJPO // Spring @ExtendWith(SpringExtension.class) public class SampleSpringTest { // Spring
Boot @SpringBootTest public class SampleSpringBootTest { w 4QSJOH͏ͳΒɻ w 4QSJOH#PPU5FTUϝλΞϊςʔγϣϯͷྫʹͳΔɻ
4QSJOH#PPU5FTU w 4QSJOHϢʔβʔͳΒ׳ΕͯΔʢʁʣϝλΞϊςʔγϣϯɻ w +6OJUͩͱ4QSJOH#PPU5FTUͱ3VO8JUIΛซه͢Δඞཁ͕͋ͬͨɻ
w .PDLJUP+6OJU3VOOFSͷସɻ w NPDLJUPDPSFʹೖ͍ͬͯͳ͍ NPDLJUPNPDLJUPKVOJUKVQJUFS ͷͰҙɻ .PDLJUP&YUFOTJPO
+6OJU+VQJUFS#%%4PGU"TTFSUJPOT w "TTFSU+ͷ֦ுɻ w "GUFS&BDI$BMMCBDLͰ࣮ݱ͍ͯ͠Δɻ
&YUFOTJPOͷԼࢧ͑ ͬ͘͟Γɺ͔ΜͨΜʹɻ
&YUFOTJPOͷಈ͔͠ํ
&YUFOTJPOͷొ !&YUFOE8JUI !3FHJTUFS&YUFOTJPO 4FSWJDF-PBEFS
&YUFOTJPOͷొ
ొࡁΈ&YUFOTJPO w ͜Ε͕͋Δ͔Βඪ४ͷ֦ு͕&YUFOE8JUIͱ͔ͳ͠Ͱಈ͘
&YUFOTJPO$POUFYUʹཷΊΔ
&OHJOF&YFDVUJPO$POUFYU w &OHJOF&YFDVUJPO$POUFYUۭͬΆɻ w +VQJUFSͰͳ͍+6OJU1MBUGPSN&YUFOTJPOͳΜͯͬͨͬͪ͜Όͳ͍ɻ
&YUFOTJPO$POUFYU &YUFOTJPOͷ࣮ΫϥεͰ͏ ʢ͜ͱ͕ଟ͍ʣ ͬͯ͘Δ͔֦ுґଘ ʢ&YUFOTJPOΠϯλϑΣʔε ϝιου࣋ͨͳ͍ʣ
&YUFOTJPO$POUFYUͷड͚औΓ w ΠϯλϑΣʔεͷҾͰ͞ΕΔɻ w &YUFOTJPO$POUFYU͔ΒςετΠϯελϯεͳͲΛऔಘͯ͠৭ʑ͢Δɻ
֦ுϙΠϯτ ֦ுϙΠϯτ͝ͱʹΠϯλ ϑΣʔε͕༻ҙ͞Ε͍ͯΔɻ ݺͼग़͠+6OJUͤɻ ৽͍֦͠ுϙΠϯτΛ͢ͷ ͍͠ɻ
&YUFOTJPO)JFSBSDIZ w ߇͑Ίʹݴͬͯʹཱͨͳ͍ਤɻ
͚ΔͳΒ͜͏ʁ
$BMMCBDL͕ݺΕΔλΠϛϯά w 6TFS(VJEFࢀর
ྫΛڍ͛ͯΈΔ
%JTBCMFE$POEJUJPO
4QSJOH&YUFOTJPO 5FTU&YFDVUJPO-JTUFOFSʹͭͳ͙ Έ 1BSBNFUFSղܾɻ ػೳՃ5FTU&YFDVUJPO-JTUFOFSͰɻ 5FTU$POUFYUҾͬுΓग़͠৻ॏʹɻ
࣮ࡍΑ͘͏ͷ
&YUFOTJPOͷ࡞Γํ ؆୯ʹɻ
࡞Γํ ֦ுΠϯλϑΣʔ εΛૉʹ͏ɻ Γͳ͍ਓ FOHJOF࣮͢Ε ͍͍ʢී௨͠ͳ͍
Δ͜ͱ ࣮ΫϥεΛ࡞ &YUFOE8JUIͳͲͰొ w ؆୯Ͱ͠ΐʁ
࡞ͬͯΈΑ͏ ͳʹ͕͋ͬͯςετ௨ͬ ͯཉ͍͠ʂ
௨ͬͯཉ͍͠ςετ class MahouTest { @Test void ઈରࣦഊ͢Δ൵͍͠ςετ() { throw new
RuntimeException(); } }
֦ுରͷબ
֦ுରͷબ
ྫ֎ϋϯυϥΛ࣮ class MahouExtension implements TestExecutionExceptionHandler { @Override public void handleTestExecutionException(
ExtensionContext context, Throwable throwable) { } } w Կ͠ͳ͖ΌѲΓͭͿ͢͜ͱʹͳΔɻ
&YUFOE8JUIͰొ @ExtendWith(MahouExtension.class) class MahouTest { @Test void ઈରࣦഊ͢Δ൵͍͠ςετ() { throw
new RuntimeException(); } }
ͬͨʔ
શʹϚελʔͨ͠ w ͪͳΈʹ00.&#MBDL-JTUFEFYDFQUJPOͱͯ͠ಛผѻ͍͞ΕͯΔ͔Βμϝɻ
ઢ#MBDLMJTUFE&YDFQUJPOT w 0VU0G.FNPSZ&SSPS͚ͩଈ࣌ऴྃ͢Δɻʢ+6OJU1MBUGPSNʣ
࡞ͬͯΈΑ͏ ॓ ςετʹಠࣗΞϊςʔγϣϯ Λͬͨͷɻ ʢώϯτ࣍ͷϖʔδʣ
w TVQQPSUύοέʔδΛ͏ͷ͕ਪʢʹͳͬͪΌ͏͠ʣ w 4VQQPSUFE6UJMJUJFTJO&YUFOTJPOT
֦ுͷՖܗ 1BSBNFUFS3FTPMWFS ͩͱࢥ͏ w ͜͜ʹه͢ʹ༨ന͕ڱ͗͢ΔɻʢׂѪʣ
࡞Δͱ͖ͷϙΠϯτ ঢ়ଶ4UPSFͰѻ͏ ϝλΞϊςʔγϣϯΛ࡞Δ ҆શஔʹ߄ͯͳ͍
w ,FFQJOH4UBUFJO&YUFOTJPOT &YUFOTJPO4UPSF &YUFOTJPOʹঢ়ଶΛ࣋ͭͱ൵͍͜͠ ͱ͕ى͜Δɻ໘Ͱ4UPSFͰɻ ͍ํೋஈ֊ͷ.BQɻ .BQ/BNFTQBDF .BQ, 7 ͷΠϝʔδɻ͋͘·ͰΠϝʔδɻ
4UPSFͱ/BNFTQBDFͱ1BSFOUͱ w &YUFOTJPO7BMVF4UPSFΠϯελϯεͷϥΠϑαΠΫϧ&YUFOTJPO$POUFYUͱಉ͡ w 4UPSFΠϯελϯεHFU4UPSFͷͨͼʹ࡞ΒΕΔʢ͚ͲͲ͏Ͱ͍͍ʣ w /BNFTQBDF͍ʹ͍͘
ϝλΞϊςʔγϣϯ Ξϊςʔγϣϯʹ༩͢ΔΞϊςʔγϣϯ Ξϊςʔγϣϯͷهड़ͳͷͰੵۃతʹ ͏ &YUFOTJPO࡞ͬͨΒ&YUFOE8JUIͰΞϊςʔτ͠ ͨΞϊςʔγϣϯΛͱΓ͋͑ͣ࡞Δͱ͍͍ɻ +BWBඪ४ͷΈͰͳ͍ w .FUB"OOPUBUJPOTBOE$PNQPTFE"OOPUBUJPOT
҆શஔ͍ͭͯ·͢ w 5FTU*OTUBODF'BDUPSZͰOVMMΛฦͨ͠ w *OWPDBUJPO*OUFSDFQUPSͰϝιουݺͳ͔ͬͨ w มͳ͜ͱ͕Ͱ͖ͳ͘ͳͬͯΔɻͨͱ͑ςετϝιουΛݺͳ͘͢Δͱ͔ɻ
͜ΕͰ+6OJUΛ શʹϚελʔͨ͠ ʜʜͱݴ͍͍ͬͯͱࢥ͏ɻ ςετࣗମ10+0ͩ͠ɺΞαʔγϣϯํ๏બࣜɻ FOHJOFMBVODIFS+6OJU +VQJUFS Ͱͳ͘ɺ +6OJU1MBUGPSNͷͳͷͰɻ