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) ํ์ํ ์๋น์ค ํธ์ถ
productService.updateProduct(productId, request);
(2) ์๋น์ค ํธ์ถ์ ํ์ํ Request record ํด๋์ค ์์ฑ
Assert ๋ฅผ ํ์ฉํด์ ์์ฑ์ ํ๋ผ๋ฏธํฐ ๊ฒ์ฆ
final UpdateProductRequest request = new UpdateProductRequest(name, price, discountPolicy);
(3) ์๋น์ค์ ์ํ ์์ ๋ฉ์๋ ๊ตฌํ
(4) ์ํ ์์ ์ ์ํ ๋๋ฉ์ธ ๋ฉ์๋๋ ํ ์คํธ ํ์
Product.update
(4) StubClass ๋๋ Mockito ๋ฅผ ํ์ฉํ์ฌ ํ ์คํธ
์ํ ์์ ๊ธฐ๋ฅ ๊ตฌํ ๋ฐ Stub ํด๋์ค๋ฅผ ํ์ฉํ ํ ์คํธ
์คํ๋ง๋ถํธ ํ
์คํธ๋ก ์ ํํ๊ธฐ
API ํ
์คํธ๋ก ์ ํํ๊ธฐ
์ํ ์ฃผ๋ฌธ ๊ธฐ๋ฅ ๊ตฌํํ๊ธฐ
POJO
์คํ๋ง๋ถํธ ํ ์คํธ๋ก ์ ํํ๊ธฐ
API ํ ์คํธ๋ก ์ ํํ๊ธฐ
JPA ์ ์ฉ
์ฃผ๋ฌธ ๊ฒฐ์ ๊ธฐ๋ฅ ๊ตฌํํ๊ธฐ
POJO
์คํ๋ง๋ถํธ ํ ์คํธ๋ก ์ ํํ๊ธฐ
API ํ ์คํธ๋ก ์ ํํ๊ธฐ
JPA ์ ์ฉ
์์ธ ํจํค์ง ๊ตฌ์กฐ ๋ง๋ค๊ธฐ
Point.
final
keywordrecord
classAssert
in constructorrest-assured
api testvar
typeHttpStatus
200 OK
201 CREATE
Last updated