TDD
์ค์ ! ์คํ๋ง๋ถํธ ์ํ-์ฃผ๋ฌธ API ๊ฐ๋ฐ๋ก ์์๋ณด๋ TDD ๊ฐ์๋ฅผ ์์ฝํ ๋ด์ฉ์ ๋๋ค.
์ํ ๋ฑ๋ก ๊ธฐ๋ฅ ๊ตฌํํ๊ธฐ
POJO
Java POJO Test
(1) ํ์ํ ์๋น์ค ํธ์ถ
productService.addProduct(request);ํ์ํ ๋์์ ํ์ํ ๊ธฐ๋ฅ๋ค๋ง์ผ๋ก ๊ตฌ์ฑ ๊ฐ๋ฅ
(2) ์๋น์ค ํธ์ถ์ ํ์ํ Request ํด๋์ค ์์ฑ
final AddProductRequest request = new AddProductRequest(name, price, discountPolicy);Request ํด๋์ค๋
recordํด๋์ค๋ก ์ฌ์ฉ ๊ฐ๋ฅAssert๋ฅผ ํ์ฉํด์ ์์ฑ์ ํ๋ผ๋ฏธํฐ ๊ฒ์ฆ
(3) ์๋น์ค ํด๋์ค ์์ฑ
๋๋ฉ์ธ ํด๋์ค ์์ฑ
(4) ์ด๋ํฐ ์์ฑ
(5) ๋ ํ์งํ ๋ฆฌ ์์ฑ
ํ ์คํธ์์๋ ๋ฐ์ดํฐ๋ฅผ ์ธ๋ฉ๋ชจ๋ฆฌ(Map)๋ก ๊ด๋ฆฌ
Then -> Given -> When ์์๋ก ์ ์ฑํด ๋ณด๊ธฐ
.
Move Inner class for test to Upper level
ํ ์คํธ ์ฝ๋์ ์์ฑ๋ inner class ๋ค์ main class ๋ก ์ด๋
F6๋จ์ถํค ํ์ฉ
์คํ๋ง๋ถํธ ํ
์คํธ๋ก ์ ํํ๊ธฐ
์์ ์๋ฐ๋ก ๊ตฌํ๋ ์๋น์ค๋ฅผ ์คํ๋ง ๋น์ผ๋ก ๋ฑ๋กํ๊ณ ์คํ๋ง ๋ถํธ ํ ์คํธ๋ก ๋์ํ๋๋ก ์ ํ
service, adapter, repository ํด๋์ค์ @Component ์ ์ธ
๊ธฐ์กด ํ ์คํธ์ @SpringBootTest ์ ์ธ ๋ฐ ์๋น์ค๋ @Autowired ๋ก ์ฃผ์
API ํ
์คํธ๋ก ์ ํํ๊ธฐ
API ํ ์คํธ๋ฅผ ์ํด io.rest-assured:rest-assured ์ฌ์ฉํ๊ธฐ
rest-assured ๋ ๊ฒฉ๋ฆฌ๊ฐ ์ ์ ๋๋ ๋ฌธ์ ๊ฐ ์กด์ฌ
๋ฐ์ดํฐ๊ฐ ์บ์ฑ์ด ๋์ด table sequence ๊ฐ ๊ผฌ์ฌ ๋ค๋ฅธ ํ ์คํธ๊ฐ ๊นจ์ง ์ ์์(ex. table sequence)
๊ฒฉ๋ฆฌ ๋ฐฉ๋ฒ์ 3์ ์ฐ์ํํ ํฌ์ธ๋ฏธ๋ / ์ฐ์ํATDD ์ฐธ๊ณ
JPA ์ ์ฉํ๊ธฐ
๊ธฐ์กด in-memory ํํ์ ๋ฐ์ดํฐ ์ ์ฅ์๋ฅผ jpa ๋ก ์ ์ฉ
์ํ ์กฐํ ๊ธฐ๋ฅ ๊ตฌํํ๊ธฐ
์ํ ๋ฑ๋ก ๊ตฌํ์ผ๋ก ์ด๋ฏธ ๊ธฐ๋ฐ์ด ์กํ ์์ผ๋ฏ๋ก POJO ๋ถํฐ ํ ์คํธ๋ฅผ ์์ํ์ง ์๊ณ @SpringBootTest ๋ก ์์
์ํ ์์ ๊ธฐ๋ฅ ๊ตฌํํ๊ธฐ
POJO
์ํ ๋ฑ๋ก๊ณผ ๋์ผํ ๋ฐฉ์์ผ๋ก ์งํ.
(1) ํ์ํ ์๋น์ค ํธ์ถ
(2) ์๋น์ค ํธ์ถ์ ํ์ํ Request record ํด๋์ค ์์ฑ
Assert ๋ฅผ ํ์ฉํด์ ์์ฑ์ ํ๋ผ๋ฏธํฐ ๊ฒ์ฆ
(3) ์๋น์ค์ ์ํ ์์ ๋ฉ์๋ ๊ตฌํ
(4) ์ํ ์์ ์ ์ํ ๋๋ฉ์ธ ๋ฉ์๋๋ ํ ์คํธ ํ์
Product.update
(4) StubClass ๋๋ Mockito ๋ฅผ ํ์ฉํ์ฌ ํ ์คํธ
์ํ ์์ ๊ธฐ๋ฅ ๊ตฌํ ๋ฐ Stub ํด๋์ค๋ฅผ ํ์ฉํ ํ ์คํธ
์คํ๋ง๋ถํธ ํ
์คํธ๋ก ์ ํํ๊ธฐ
API ํ
์คํธ๋ก ์ ํํ๊ธฐ
์ํ ์ฃผ๋ฌธ ๊ธฐ๋ฅ ๊ตฌํํ๊ธฐ
POJO
์คํ๋ง๋ถํธ ํ ์คํธ๋ก ์ ํํ๊ธฐ
API ํ ์คํธ๋ก ์ ํํ๊ธฐ
JPA ์ ์ฉ
์ฃผ๋ฌธ ๊ฒฐ์ ๊ธฐ๋ฅ ๊ตฌํํ๊ธฐ
POJO
์คํ๋ง๋ถํธ ํ ์คํธ๋ก ์ ํํ๊ธฐ
API ํ ์คํธ๋ก ์ ํํ๊ธฐ
JPA ์ ์ฉ
์์ธ ํจํค์ง ๊ตฌ์กฐ ๋ง๋ค๊ธฐ
Point.
finalkeywordrecordclassAssertin constructorrest-assuredapi testvartypeHttpStatus
200 OK
201 CREATE
Last updated