bulid.gradle์ ์์กด์ฑ ๋ฑ๋กํ๊ธฐ Entity ํด๋์ค Entity๊ฐ not null์ผ ๊ฒฝ์ฐ Builder๊ธฐ๋ฐ์ผ๋ก ์์ฑ๋๋ ํจํด์ผ๋ก ๋ง๋ค๋ Assert.notNull(title, "title must not be null"); Assert๋ฅผ ์ด์ฉํด ๊ฐ์ฒด๋ฅผ ์์ ํ๊ฒ ์์ฑํ๋ค Postsํด๋์ค๋ก Database๋ฅผ ์ ๊ทผํ๊ฒ ํด์ค PostsRepository ์ธํฐํ์ด์ค๋ฅผ Entityํด๋์ค์ ๊ฐ์ ์์น์ ๋ง๋ค์ด์ค๋ค(*) JpaReopository ๋ฅผ ์์ํ๋ฉด ๊ธฐ๋ณธ์ ์ธ CRUD๋ฉ์๋๊ฐ ์๋์ผ๋ก ์์ฑ๋๋ค. ํ
์คํธ ์ฝ๋๋ฅผ ์์ฑํ์ฌ ํ์ธํ์!
๐ WEB/Spring
@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..