@SpringBootTest, @DataJpaTest ์ฐจ์ด

@SpringBootTest

๋ชฉ์ : ์ „์ฒด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํ…์ŠคํŠธ๋ฅผ ๋กœ๋“œํ•˜์—ฌ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ชจ๋“  ๊ตฌ์„ฑ ์š”์†Œ์™€ ๋นˆ์„ ๋กœ๋“œํ•˜๊ณ , ํ…Œ์ŠคํŠธ์šฉ ํ™˜๊ฒฝ์„ ์„ค์ •ํ•œ๋‹ค. ์‹ค์ œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ์œ ์‚ฌํ•œ ํ™˜๊ฒฝ์—์„œ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฏ€๋กœ DB, ์™ธ๋ถ€ ์„œ๋น„์Šค, ์Šค์ผ€์ค„๋Ÿฌ ๋“ฑ๊ณผ ๊ฐ™์€ ์™ธ๋ถ€ ์ข…์†์„ฑ์„ ํฌํ•จํ•œ ๊ฒƒ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ „์ฒด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํ…์ŠคํŠธ๋ฅผ ๋กœ๋“œํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ…Œ์ŠคํŠธ ์‹œ๊ฐ„์ด ์ƒ๋Œ€์ ์œผ๋กœ ๊ธธ๋‹ค. ๋Œ€๊ทœ๋ชจ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ํ…Œ์ŠคํŠธ ์‹œ๊ฐ„์„ ์ค„์ด๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ•„์š”ํ•œ ์ตœ์†Œ ๋นˆ๋งŒ ๋กœ๋“œํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ณ ๋ฏผํ•ด์•ผ ํ•œ๋‹ค.

@SpringBootTest(classes = {
    TestConfiguration.class, 
    SpecificService.class
})

ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ์—๋Š” ๊ฐ•๋ ฅํ•˜์ง€๋งŒ, ํ…Œ์ŠคํŠธ ์‹คํ–‰ ์‹œ๊ฐ„์ด ๊ธธ์–ด์งˆ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ์™€ ์ž˜ ๋ถ„๋ฆฌํ•ด์„œ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

@DataJpaTest

๋ชฉ์ : JPA์™€ ๊ด€๋ จ๋œ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. JPA Entity, Repository, DB Connection ๋“ฑ๊ณผ ๊ด€๋ จ๋œ ํ…Œ์ŠคํŠธ๋ฅผ ์ง‘์ค‘์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด ์–ด๋…ธํ…Œ์ด์…˜์€ ํ…Œ์ŠคํŠธ์šฉ DB๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ , JPA Entity์™€ Repository๋ฅผ ๋กœ๋“œํ•œ๋‹ค.

Controller ํ˜น์€ Srvice์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ๋“ค์€ ๋กœ๋“œํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— JPA ๊ด€๋ จ ํ…Œ์ŠคํŠธ๋ฅผ ๋” ๋น ๋ฅด๊ณ  ๊ฒฝ๋Ÿ‰ํ™”๋œ ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ ํŠธ๋žœ์žญ์…˜์ด rollback ๋ชจ๋“œ(@Transaction์ด ํฌํ•จ)๋กœ ์„ค์ •๋˜์„œ ํ…Œ์ŠคํŠธ๊ฐ€ ๋๋‚˜๋ฉด DB๊ฐ€ ์›๋ž˜ ์ƒํƒœ๋กœ ๋ณต์›๋œ๋‹ค.

๋˜, ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ๊ธฐ๋ฐ˜์˜ ๋‚ด์žฅ DB๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ์ด๊ฒŒ ์‹ซ์œผ๋ฉด @AutoConfigureTestDatabase์˜ replace ์†์„ฑ์„ Replace.NONE์œผ๋กœ ์„ค์ •ํ•˜๋ฉด ๋œ๋‹ค.

Last updated