๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ–ฅ๏ธ ๋ฐฑ์—”๋“œ/SpringBoot

[์Šคํ”„๋ง๋ถ€ํŠธ ํ€ต์Šคํƒ€ํŠธ] ch.3 ํ…Œ์ŠคํŠธ, ๋กœ๊น…, ๋นŒ๋“œ

by OR15A 2023. 11. 23.
@SpringBootTest

logging.level.com.rebypaper=trace

 

โ€‹โ–ถํ…Œ์ŠคํŠธ

  • @SpringBootTest ์• ๋„ˆํ…Œ์ด์…˜์„ ๋ถ™์ด๋ฉด ๋ณต์žกํ•œ ํ…Œ์ŠคํŠธ ์„ค์ •๋“ค์„ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ , ํ…Œ์ŠคํŠธ ๊ด€๋ จ ๊ฐ์ฒด๋“ค์„ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ ค์คŒ
  • ๊ด€๋ จ์†์„ฑ
  • properties : ํ…Œ์ŠคํŠธ๊ฐ€ ์‹คํ–‰๋˜๊ธฐ ์ „์— ํ…Œ์ŠคํŠธ์—์„œ ์‚ฌ์šฉํ•  ์Šค๋กœํผํ‹ฐ๋“ค์„ k=yํ˜•ํƒœ๋กœ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ properties ํŒŒ์ผ์— ์„ค์ •๋œ ํ”„๋กœํผํ‹ฐ๋ฅผ ์žฌ์ •์˜ํ•จ
  • classes : ํ…Œ์ŠคํŠธํ•  ํด๋ž˜์Šค๋“ค์„ ๋“ฑ๋กํ•จ. ์ƒ๋žต์‹œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ •์˜๋œ ๋ชจ๋“  ๋นˆ์„ ์ƒ์„ฑํ•จ
  • webEnvironment : ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‹คํ–‰๋  ๋•Œ ์›น๊ณผ ๊ด€๋ จ๋œ ํ™˜๊ฒฝ์„ค์ • ๊ฐ€๋Šฅ

โ€‹โ€‹

  • ๋ชจํ‚น : ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด ์‹ค์ œ ๊ฐ์ฒด์™€ ๋น„์Šทํ•œ ๋ชจ์˜ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ
  • ๋ชฉ์—… : ๋ชจํ‚นํ•œ ๊ฐ์ฒด๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์–ป์–ด๋‚ด๋Š” ๊ณผ์ •
  • ๋ชจํ‚นํ•˜๋ ค๋ฉด @WebMvcTest(์ปจํŠธ๋กค๋Ÿฌ๋งŒ ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅ) ์‚ฌ์šฉ or @AutoConfigureMockMvc(์„œ๋น„์Šค ๋ ˆํŒŒ์ง€ํ† ๋ฆฌ ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅ, ๋Œ€์‹  ๋ฌด๊ฑฐ์›€) ์‚ฌ์šฉ

โ€‹

  • MockMvc์˜ ๋ฉ”์„œ๋“œ
  • perform() : ๋ธŒ๋ผ์šฐ์ €์—์„œ ์„œ๋ฒ„์— URL ์š”์ฒญ์„ ํ•˜๋“ฏ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ์Œ.
  • andExpect() : ์„œ๋ฒ„์˜ ์‘๋‹ต ๊ฒฐ๊ณผ ๊ฒ€์ฆ ๊ฐ€๋Šฅํ•จ

โ€‹

  • perform()์˜ ๋งค๊ฐœ๋ณ€์ˆ˜ : RequestBuilder ๊ฐ์ฒด (MockMvcRequestBuilders์˜ ์ •์  ๋ฉ”์„œ๋“œ๋กœ ์ƒ์„ฑํ•จ)
  • RequestBuilder ๊ฐ์ฒด : ์š”์ฒญ๊ด€๋ จ ์ •๋ณด ์„ค์ • ๊ฐ€๋Šฅํ•จ. param()์œผ๋กœ ํŒŒ๋ผ๋ฏธํ„ฐ ์—ฌ๋Ÿฌ๊ฐœ ์ „๋‹ฌ ๊ฐ€๋Šฅํ•จ, perform()์œผ๋กœ ์š”์ฒญ ์ „์†กํ•˜๋ฉด RequestAction๊ฐ์ฒด ๋ฆฌํ„ดํ•ด์„œ andExpect()๋ฅผ ํ†ตํ•ด ๊ฒฐ๊ณผ ๊ฒ€์ฆ ๊ฐ€๋Šซ์•”.
  • view() ๋ทฐ ๊ฒ€์ฆ
  • redirectedUrl() : ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ํ–ˆ๋Š”์ง€ ๊ฒ€์ฆ

โ€‹

โ€‹

  • ์ •์ƒ์ ์ธ ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ ๊ตฌ๋™ํ•˜๊ณ  ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ ํ™•์ธํ•˜๊ณ  ์‹ถ์„ ๋•Œ๋Š” @SpringBootTest์˜ webEnviroment ์†์„ฑ๊ฐ’์„ RANDOM_PORT or DEFINED_PORT ๋กœ ๋ณ€๊ฒฝ.
  • webEnviroment ์†์„ฑ
์ƒ์ˆ˜
์˜๋ฏธ
๋‚ด์žฅํ†ฐ์บฃ
MOCK
๋ชจํ‚น๋œ ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‚ด์žฅ ํ†ฐ์บฃ์ด ๊ตฌ๋™๋˜์ง€ ์•Š์Œ
X
RANDOM_PORT
๋žœ๋คํ•œ ํฌํŠธ๋กœ ๋‚ด์žฅ ํ†ฐ์บฃ์„ ๊ตฌ๋™
O
DEFINED_PORT
์œ„์™€ ๋™์ผํ•˜์ง€๋งŒ application.propertires ํŒŒ์ผ์— ์„ค์ •๋œ ์„œ๋ฒ„ ํฌํŠธ๋ฅผ ์‚ฌ์šฉ
O
NONE
์„œ๋ธ”๋ฆฟ ๊ธฐ๋ฐ˜์˜ ํ™˜๊ฒฝ ์ž์ฒด๋ฅผ ๊ตฌ์„ฑํ•˜์ง€ ์•Š
X
 
spring.main.web-application-type=selvlet       //์ด๊ฒŒ ์žˆ์–ด์•ผ ํ†ฐ์บฃ ์ž‘๋™

โ€‹

โ–ถ๋กœ๊น…

  • ํผ์‚ฌ๋“œ ํŒจํ„ด(Facade Pattern) : ๋””์ž์ธ ํŒจํ„ด ์ค‘์—์„œ ๊ตฌํ˜„ ์„ธ๋ถ€์‚ฌํ•ญ์„ ์ˆจ๊ธฐ๊ณ  ๊ฐœ๋ฐœ์ž๊ฐ€ ๋‚ด๋ถ€ ๋™์ž‘์„ ๋ชฐ๋ผ๋„ ๋  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ํŒจํ„ด
  • ์Šคํ”„๋ง๋ถ€ํŠธ๋Š” SLF4J๋ผ๋Š” ํผ์‚ฌ๋“œ๋ฅผ ํ†ตํ•ด ๊ถ๊ทน์ ์œผ๋กœ๋Š” LogBack์„ ์‚ฌ์šฉํ•จ.
  • ์Šคํ”„๋ง๋ถ€ํŠธ๋Š” logging ์Šคํƒ€ํ„ฐ๋ฅผ ์ด์šฉํ•˜์—ฌ Java Util Logging, Log4j 2, Logback ์„ ๊ตฌํ˜„์ฒด๋กœ ๊ฐ€์ง€๊ณ  ์žˆ์Œ(์›ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋„๋ก)
  • ์Šคํ”„๋ง๋ถ€ํŠธ๋Š” ์ด ์ค‘์—์„œ Logback์„ ์ด์šฉํ•˜์—ฌ ๋กœ๊ทธ๋ฅผ ์ถœ๋ ฅํ•จ

โ€‹

  • ๋กœ๊ทธ๋ ˆ๋ฒจ
Level
์˜๋ฏธ
ERROR
์‚ฌ์šฉ์ž ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์ค‘ ๋ฌธ์ œ
WARN
์ฒ˜๋ฆฌ ๊ฐ€๋Šฅํ•œ ๋ฌธ์ œ์ด์ง€๋งŒ, ํ–ฅํ›„ ์‹œ์Šคํ…œ ์—๋Ÿฌ์˜ ์›์ธ์ด ๋  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ
INFO
๋กœ๊ทธ์ธ์ด๋‚˜ ์ƒํƒœ๋ณ€๊ฒฝ๊ณผ ๊ฐ™์€ ์ •๋ณด์„ฑ ๋ฉ”์„ธ์ง€
DEBUG
๊ฐœ๋ฐœ ์‹œ ๋””๋ฒ„๊น… ๋ชฉ์ ์œผ๋กœ ์ถœ๋ ฅํ•˜๋Š” ๋ฉ”์„ธ์ง€
TRACE
DEBUG ๋ ˆ๋ฒจ๋ณด๋‹ค ์ข€ ๋” ์ƒ์„ธํ•œ ๋ฉ”์„ธ์ง€
  • ๋กœ๊ทธ๋ ˆ๋ฒจ ์กฐ์ •๋ฐฉ๋ฒ• : ์™ธ๋ถ€ ํ”„๋กœํผํ‹ฐ ํŒŒ์ผ์„ ์ˆ˜์ •ํ•จ

โ€‹ logging.level.com.rebypaper=trace

  • ์Šคํ”„๋ง๋ถ€ํŠธ๊ฐ€ ๊ธฐ๋ณธ์œผ๋กœ ์ œ๊ณตํ•˜๋Š” ์„ค์ •ํŒŒ์ผ(base.xml)์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์ง์ ‘ ๋ชจ๋“  ๊ฒƒ์„ ์ œ์–ดํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, logback.xml์„ ์ž‘์„ฑํ•œ๋‹ค → ๋กœ๊ทธํŒŒ์ผ์€ ๋งค์šฐ ํฌ๊ธฐ๋•Œ๋ฌธ์—, ์„ ํƒ์ ์œผ๋กœ ํด๋ฆญ ์œ„์น˜ ๋“ฑ ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ์ปค์Šคํ„ฐ๋งˆ์ด์ง• ํ•˜๋ฉด ์ข‹์Œ

โ€‹