Search
Duplicate

Embedded Redis JUnit 5 ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ ๊ตฌ์ถ•ํ•˜๊ธฐ(Callback Extension)

๋ฐฐ๊ฒฝ

์ €ํฌ ๋ชจ๋ฝ ํ”„๋กœ์ ํŠธ๋Š” ๋™์‹œ์„ฑ์„ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•ด ๋ ˆ๋””์Šค์˜ ๋ถ„์‚ฐ๋ฝ์„ ์‚ฌ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๋ถ„์‚ฐ๋ฝ์„ ์ถ”๊ฐ€ํ•  ๋•Œ, ๋กœ์ปฌ์—์„œ๋Š” ๋„์ปค๋ฅผ ์ด์šฉํ•ด ๋ ˆ๋””์Šค ์„œ๋ฒ„๋ฅผ ๋„์› ๊ณ , ์šด์˜ ์„œ๋ฒ„์—์„œ๋Š” ๋ ˆ๋””์Šค ์„œ๋ฒ„๊ฐ€ ๋”ฐ๋กœ ์‹คํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค. ์ด์— ๋”ฐ๋ผ ๋ถ„์‚ฐ๋ฝ์„ ์ถ”๊ฐ€ํ•  ๋‹น์‹œ์—๋Š” ๋ชจ๋“  ํ…Œ์ŠคํŠธ๊ฐ€ ์‹คํŒจ์—†์ด ์ œ๋Œ€๋กœ ๋™์ž‘ํ–ˆ์œผ๋‚˜, ์ดํ›„ ๋„์ปค๋ฅผ ์ข…๋ฃŒํ•œ ๋’ค ๋‹ค์‹œ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋‹ˆ ๋ ˆ๋””์Šค์— ์—ฐ๊ฒฐํ•˜์ง€ ๋ชปํ•ด @SpringbootTest๊ฐ€ ๋ถ™์€ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ๋Š” ์‹คํŒจํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์— ๋ชจ๋“  ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์—์„œ ๋ ˆ๋””์Šค ์„œ๋ฒ„์— ๋…๋ฆฝ์ ์ผ ์ˆ˜ ์žˆ๋„๋ก ์ž„๋ฒ ๋””๋“œ ๋ ˆ๋””์Šค ์„œ๋ฒ„๋ฅผ ํ…Œ์ŠคํŠธ์— ๋„์ž…ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

์ƒ๊ฐํ•ด๋ณธ ํ•ด๊ฒฐ ๋ฐฉ์•ˆ

ํ…Œ์ŠคํŠธ ์ปจํ…Œ์ด๋„ˆ

โ€ข
์Šคํ”„๋ง ํ…Œ์ŠคํŠธ ์‹œ ์ž์ฒด์—์„œ ๋„์ปค๋ฅผ ๋„์šธ ์ˆ˜ ์žˆ๊ธฐ๋•Œ๋ฌธ์— ๋ ˆ๋””์Šค์˜ ๋ฒ„์ „, ๋ฐ๋ชฌ ๋“ฑ์ด ์–ด๋– ํ•œ ํ™˜๊ฒฝ์—์„œ๊ฑด ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
โ€ข
๊ธฐ๋ณธ์ ์œผ๋กœ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์— ๋„์ปค๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
โ€ข
๋˜ํ•œ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํ…Œ์ŠคํŠธ ์‹œ์— ๋„์šฐ๊ธฐ ๋•Œ๋ฌธ์— ํ…Œ์ŠคํŠธ๊ฐ€ ๋งค์šฐ ๋Š๋ฆฝ๋‹ˆ๋‹ค.

๋ชฉํ‚น

โ€ข
์ถ”์ƒํ™”๋ฅผ ํ•ด์•ผ ํ•˜๋Š” ๋ถ€๋ถ„์ด RedissonClient, RLock ๋‘ ๊ตฐ๋ฐ๋ผ์„œ ๋ณ€๊ฒฝ์ ์ด ๋งŽ์•„์ง„๋‹ค.
โ€ข
ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ์‹œ์— ๋ถ„์‚ฐ๋ฝ์„ ํš๋“ํ•˜๋Š” ์ง€์— ๋Œ€ํ•ด ํ™•์ธํ•  ์ˆ˜ ์—†๋‹ค.

์ž„๋ฒ ๋””๋“œ ๋ ˆ๋””์Šค

โ€ข
๋‚ด์žฅ ํ˜•ํƒœ๋กœ ์ œ๊ณตํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žˆ์–ด์„œ ์–ด๋– ํ•œ ํ™˜๊ฒฝ์—์„œ๋“  ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
โ€ข
๋˜ํ•œ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ์‹œ์—๋„ ์ž„๋ฒ ๋””๋“œ ๋ ˆ๋””์Šค ์„œ๋ฒ„์™€ ์‹ค์ œ๋กœ ํ†ต์‹ ์ด ์ด๋ฃจ์–ด์ ธ ๋ถ„์‚ฐ๋ฝ์„ ํš๋“ํ•˜๋Š”์ง€ ํ™•์ธ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์ž„๋ฒ ๋””๋“œ ๋ ˆ๋””์Šค ์ ์šฉ

์ปจํ…์ŠคํŠธ ๋นˆ ๋ผ์ดํ”„ ์‚ฌ์ดํด ํ™œ์šฉ

โ€ข
ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ์‹œ์— ๋“ฑ๋ก๋œ ๋ชจ๋“  ๋นˆ๋“ค์„ ๋“ฑ๋กํ•˜๋Š”๋ฐ, ์ด ๋•Œ ๋ ˆ๋””์Šค ์„œ๋ฒ„๋„ ์ž„๋ฒ ๋””๋“œ ๋ ˆ๋””์Šค ์„œ๋ฒ„๋กœ ํ•จ๊ป˜ ๋„์šธ ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ๊ฐ€ ๋๋‚˜๋ฉด ์ž„๋ฒ ๋””๋“œ ๋ ˆ๋””์Šค ์„œ๋ฒ„๋„ ํ•จ๊ป˜ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.
โ€ข
ํ•˜์ง€๋งŒ ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š”๋ฐ์š”, ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์ผ ์‹œ์—๋Š” ํฌํŠธ๊ฐ€ ์ค‘๋ณต๋˜์–ด ๋‹ค๋ฅธ ์„œ๋ฒ„๋กœ ์˜ฎ๊ฒจ์•ผ ํ•œ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ์ €ํฌ ํ”„๋กœ์ ํŠธ ๊ฒฝ์šฐ์—๋Š” ์ธ์ˆ˜ ํ…Œ์ŠคํŠธ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด @SpringbootTest ๊ฐ€ ์—ฌ๋Ÿฌ ๋ฒˆ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์ด์— ๋”ฐ๋ผ ํฌํŠธ์˜ ์ค‘๋ณต์ด ๋ฐœ์ƒํ•˜๊ธฐ๋•Œ๋ฌธ์— ์„œ๋ฒ„๋ฅผ ๋„์šธ ๋•Œ ํฌํŠธ๋ฅผ ํ™•์ธํ•˜๊ณ  ๋น„์–ด์žˆ๋Š” ํฌํŠธ๋กœ ์ž„๋ฒ ๋””๋“œ ๋ ˆ๋””์Šค ์„œ๋ฒ„๋ฅผ ๋„์›Œ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
โ€ข
์ด๋Ÿฌํ•œ ๊ณผ์ •์€ jojoldu ๋‹˜์˜ ํฌ์ŠคํŒ…์—์„œ ์ž˜ ๋‚˜์™€ ์žˆ์Šต๋‹ˆ๋‹ค.

Callback Extension ํ™œ์šฉ