๐ŸŒ WEB/Spring

bulid.gradle์— ์˜์กด์„ฑ ๋“ฑ๋กํ•˜๊ธฐ Entity ํด๋ž˜์Šค Entity๊ฐ€ not null์ผ ๊ฒฝ์šฐ Builder๊ธฐ๋ฐ˜์œผ๋กœ ์ƒ์„ฑ๋˜๋Š” ํŒจํ„ด์œผ๋กœ ๋งŒ๋“ค๋•Œ Assert.notNull(title, "title must not be null"); Assert๋ฅผ ์ด์šฉํ•ด ๊ฐ์ฒด๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์ƒ์„ฑํ•œ๋‹ค Postsํด๋ž˜์Šค๋กœ Database๋ฅผ ์ ‘๊ทผํ•˜๊ฒŒ ํ•ด์ค„ PostsRepository ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ Entityํด๋ž˜์Šค์™€ ๊ฐ™์€ ์œ„์น˜์— ๋งŒ๋“ค์–ด์ค€๋‹ค(*) JpaReopository ๋ฅผ ์ƒ์†ํ•˜๋ฉด ๊ธฐ๋ณธ์ ์ธ CRUD๋ฉ”์†Œ๋“œ๊ฐ€ ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋œ๋‹ค. ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์—ฌ ํ™•์ธํ•˜์ž!
@RunWith(SpringRunner.class) ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•  ๋•Œ JUnit์— ๋‚ด์žฅ๋œ ์‹คํ–‰์ž ์™ธ ๋‹ค๋ฅธ ์‹คํ–‰์ž๋ฅผ ์‹คํ–‰ ์Šคํ”„๋ง ๋ถ€ํŠธ ํ…Œ์ŠคํŠธ - JUnit์‚ฌ์ด์— ์—ฐ๊ฒฐ์ž ์—ญํ• ์„ ํ•จ @WebMvcTest Web์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๋Š” ์–ด๋…ธํ…Œ์ด์…˜, @Controller,@ControllerAdvice๋“ฑ Controller์—์„œ ์ด์šฉ ๊ฐ€๋Šฅํ•œ ์–ด๋…ธํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. @Autowired ๋นˆ์„ ์ฃผ์ž… MockMvc HTTP์˜ GET,POST๋“ฑ์— ๋Œ€ํ•œ ์›นAPI๋ฅผ ํ…Œ์ŠคํŠธํ•  ๋•Œ ์‚ฌ์šฉ ์™ธ๋ถ€์˜ ๊ฒฐ๊ณผ์— ํฌ๊ฒŒ ์˜์กดํ• ๋•Œ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ๋ถ€ํ„ฐ ํŠน์ • ๊ฐ’์„ ๋ฐ›์„ ๋•Œ, ํŠน์ • ์‹œ๊ฐ์—๋งŒ ์‹คํ–‰๋˜๋Š” ๊ฒฝ์šฐ ๋“ฑ perform() HTTP GET,POST ์š”์ฒญ, ์ฒด์ด๋‹ ์ง€์› andExpect() ์„ ์ด์šฉํ•ด์„œ ๋‹ค์–‘ํ•˜๊ฒŒ ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ๋‹ค. assertThat()
Controller @SpringBootApplication ์Šคํ”„๋ง๋ถ€ํŠธ์˜ ์ž๋™ ์„ค์ •, ์Šคํ”„๋ง Bean ์ฝ๊ธฐ์™€ ์ƒ์„ฑ์„ ๋ชจ๋‘ ์ž๋™์œผ๋กœ ์„ค์ •ํ•จ ํ•ด๋‹น class์— ์žˆ๋Š” ์œ„์น˜๋ถ€ํ„ฐ ์„ค์ •์„ ์ฝ์–ด ๊ฐ€๊ธฐ ๋•Œ๋ฌธ์— ํ•ญ์ƒ ํ”„๋กœ์ ํŠธ์˜ ์ตœ์ƒ๋‹จ์— ์œ„์น˜ํ•ด์•ผ ํ•จ. SpringBootApplication.run() ์Šคํ”„๋ง๋ถ€ํŠธ์˜ ๋‚ด์žฅ was์ด๋‹ค. ์™ธ์žฅ was๋ฅผ ์‚ฌ์šฉํ•ด๋„ ๋˜์ง€๋งŒ ๋‚ด์žฅ was ์‚ฌ์šฉ ๊ถŒ๊ณ  (์–ธ์ œ ์–ด๋””์„œ๋‚˜ ๊ฐ™์€ ํ™˜๊ฒฝ์—์„œ ์Šคํ”„๋ง ๋ถ€ํŠธ๋ฅผ ๋ฐฐํฌ) ์„ฑ๋Šฅ์ƒ ์ด์Šˆ : ํ†ฐ์บฃ ์—ญ์‹œ ์„œ๋ธ”๋ฆฟ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ์ž๋ฐ” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋‹ค. ๋˜‘๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ ํฌ๊ฒŒ ๊ณ ๋ คํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค. @RestController ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ JSON์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ปจํŠธ๋กค๋Ÿฌ๋กœ ๋งŒ๋“ค์–ด ์คŒ ์˜ˆ์ „์—๋Š” @ResposeBody๋ฅผ ๊ฐ ๋ฉ”์†Œ๋“œ๋งˆ๋‹ค ์„ ์–ธ ํ–ˆ๋˜๊ฒƒ์„ ํ•œ๋ฒˆ์— ์‚ฌ์šฉํ•  ์ˆ˜ ..
๋ฉ”์ธํŽ˜์ด์ง€์— ๊ฐ€์ž…ํ•œ ํšŒ์›์˜ ์ˆ˜๋ฅผ ํ‘œ์‹œํ•ด์ฃผ๊ณ  ์‹ถ์€๋ฐ ํšŒ์›์ด ๊ฐ€์ž…ํ–ˆ์„๋•Œ ๋ฐ”๋กœ ํ‘œ์‹œ๋˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ๋งค์ผ ์‹œ๊ฐ„์„ ์ •ํ•ด๋‘๊ณ  ์ž๋™์œผ๋กœ ์—…๋ฐ์ดํŠธ ํ•˜๊ฒŒ ํ•˜๊ณ ์‹ถ์—ˆ๋‹ค. servlet-context์— xmlns:task="http://www.springframework.org/schema/task" http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd ์ถ”๊ฐ€ ํ•ด์ฃผ์—ˆ๊ณ  context:component-scan base-package ์—๋Š” ์ ์šฉํ•˜๋Š” ๊ฒฝ๋กœ ์ ์–ด์ฃผ๋ฉด ๋˜๋Š”๋ฐ com.min.app ์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ํŒจํ‚ค์ง€ ๋ชจ๋‘๋ฅผ ์„ ํƒํ–ˆ๋‹ค ๊ทธ๋‹ค์Œ ์Šค์ผ€์ฅด๋Ÿฌ ์‚ฌ์šฉํ•  class๋ฅผ ๋งŒ๋“ค์–ด์ฃผ์—ˆ๋‹ค. public static i..
์• ์ •์“ฐ
'๐ŸŒ WEB/Spring' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก (2 Page)