๋ฉ‹์‚ฌ Backend Plus 35์ผ์ฐจ ๐Ÿฆ

์‹ ์žฌ์›ยท2023๋…„ 12์›” 16์ผ

์˜ค๋Š˜๋„ ํ”„๋กœ์ ํŠธ๋ฅผ ์˜ค์ „ ์˜คํ›„ ์ง„ํ–‰ํ•˜์˜€๊ณ , ์˜ค์ „์—๋Š” ์ถ”ํ›„ ๋ฐฐํฌ์— ์žˆ์–ด ํšŒ์˜๋ฅผ ํ•˜๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์ง€๊ฒŒ ๋˜์—ˆ๋‹ค.

์˜ค์ „ ์‹œ๊ฐ„์—๋Š”, ๋ฐฐํฌ์— ๋Œ€ํ•œ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์˜๊ฒฌ์„ ๋‚˜๋ˆ„์—ˆ๊ณ ,
๋ฐฐํฌ๋Š” ๋‚ด๊ฐ€ ๋งก์•„์„œ ํ•˜์˜€๊ณ , CI / CD ๊ตฌ์ถ•์„ ์œ„ํ•ด GitHub Action, Jenkins ๋“ฑ ๋งŽ์€ ๋ฐฉ๋ฒ•์ด ์กด์žฌ ํ–ˆ์Šต๋‹ˆ๋‹ค.

์™œ Jenkins๋ฅผ ์‚ฌ์šฉ ?

๊ฐœ๋ฐœ ํŠธ๋ Œ๋“œ ์ˆ˜์น˜์™€ ๋งŽ์€ ๊ธฐ์—…์—์„œ Jenkins๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ ๊ฐ™์•„ Jenkins ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜์—ˆ๊ณ  ๋ฐฐํฌ๋ฅผ ์‹œ์ž‘ํ•˜๊ฒŒ ๋˜๋ฉด ๋ธ”๋กœ๊น… ํ•  ๊ณ„ํš ์ž…๋‹ˆ๋‹ค.

์˜ค์ „

๋‚ด ๊ณ„ํš์€ AWS EC2 -> Docker -> Jenkins (์  ํ‚จ์Šค) ํŒŒ์ดํ”„ ๋ผ์ธ ๊ตฌ์ถ•์„ ํ•˜์—ฌ ํ•  ๊ณ„ํš์ด๋ฉฐ, ํŒ€์› ์ค‘ ํ•œ๋ถ„์ด ์ด๋ ‡๊ฒŒ ์ง„ํ–‰ ํ•ด๋ณธ ๊ฒฝํ—˜์ด ์žˆ์–ด ๋ชจ๋ฅด๋Š” ๋ถ€๋ถ„์ด ์žˆ์œผ๋ฉด ๋ฌผ์–ด๋ณด๋ฉด์„œ ์ง„ํ–‰ ํ•ด์•ผ ๋  ๊ฒƒ ๊ฐ™๋‹ค.

์˜คํ›„

Junit5 ์˜ Mockito ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค.
ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉฐ ์ž๋ฃŒ๋ฅผ ์ฐพ์€ ํ‚ค์›Œ๋“œ๋“ค์— ๋Œ€ํ•œ ์ •๋ฆฌ๋ฅผ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Mock ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋˜ ์™€์ค‘ ์ด๋Ÿฌํ•œ UnnecessaryStub ? ์—๋Ÿฌ๋ฅผ ๋งˆ์ฃผ์น˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. (๋ถˆํ•„์š”ํ•œ stub ์˜ˆ์™ธ)

stub ์ด๋ž€ ?

ํ…Œ์ŠคํŠธ ์ฝ”๋“œ์—์„œ ์‚ฌ์šฉํ•˜๋Š” (When, thenReturn, Mock.mockito ๋“ฑ)

์•„๋ž˜์™€ ๊ฐ™์ด @MockitoSettings(strictness = Strictness.LENIENT) ์–ด๋…ธํ…Œ์ด์…˜์„ ํ†ตํ•ด Mockito์˜ ์—„๊ฒฉ์„ฑ ์ฆ‰ stub์„ ์ค„์—ฌ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@ExtendWith(MockitoExtension.class)
@MockitoSettings(strictness = Strictness.LENIENT)
class ItemCartServiceImplTest {
}

@ExtendWith(MockitoExtension.class) : JUnit5์—์„œ Mockito๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์–ด๋…ธํ…Œ์ด์…˜์ž…๋‹ˆ๋‹ค.

@MockitoSettings(strictness = ์˜ต์…˜) ์•„๋ž˜์˜ ์‚ฌ์ง„์ฒ˜๋Ÿผ 3๊ฐ€์ง€์˜ ์˜ต์…˜์„ ๋ถ€์—ฌํ• ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. LENIENT : LENIENT๋กœ ์„ค์ •ํ•˜๋ฉด Mockito๋Š” ๋ถˆํ•„์š”ํ•œ ์Šคํ… (stub) ์„ค์ •์— ๋Œ€ํ•œ ์•„๋ฌด๋Ÿฐ ๊ฒฝ๊ณ ๋‚˜ ์—๋Ÿฌ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  2. WARN : ์ด ์„ค์ •์€ ๋ถˆํ•„์š”ํ•œ ์Šคํ… (stub) ์„ค์ •์ด๋‚˜ ๋ถˆํ•„์š”ํ•œ ๊ฒ€์ฆ์— ๋Œ€ํ•ด ๊ฒฝ๊ณ ๋งŒ์„ ๋ฐœ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.
  3. STRICT_STUBS : ์ด ์„ค์ •์€ ๋ถˆํ•„์š”ํ•œ ์Šคํ… ์„ค์ •์— ๋Œ€ํ•ด ๊ฒฝ๊ณ ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๊ณ , ์Šคํ…์ด ์‚ฌ์šฉ๋˜์ง€ ์•Š์•˜์„ ๋•Œ ์—๋Ÿฌ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.

REFERENCE

https://widian.github.io/java/2021/08/15/mockito-%EC%82%AC%EC%9A%A9-%EC%A4%91-Unnecessary-Stubbing-Exception-%ED%95%B4%EC%86%8C%ED%95%98%EA%B8%B0.html (์ž˜ ์ •๋ฆฌ ํ•ด์ฃผ์‹  Unless Stub ํ•ด๊ฒฐ ๋ธ”๋กœ๊ทธ)

0๊ฐœ์˜ ๋Œ“๊ธ€