Skip to content

[CHORE๐Ÿ› ] Test code ๊ตฌ์ƒย #108

@dragontaek-lee

Description

@dragontaek-lee

๐Ÿง ์„ค๋ช…!

  • ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ ๊ณ„ํš์„ ๊ตฌ์ƒํ•ฉ๋‹ˆ๋‹ค.

ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ

  • ์„ค์ • ๊ฐ„์†Œํ™” - ํ†ตํ•ฉํ…Œ์ŠคํŠธ์— ํ•„์š”ํ•œ ์„ค์ •์„ ๋ฌถ์–ด์ฃผ๊ธฐ(@IntegrationTestConfig) ๋‹ค๋ฅธ ์‹œ๋‚˜๋ฆฌ์˜ค์— ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ๊ฐ„ํŽธํ•˜๊ฒŒ ์ž‘์„ฑ ๊ฐ€๋Šฅ
  • MockMVC
    • Web ์˜์—ญ์˜ ํด๋ž˜์Šค๋ฅผ ์ธ์Šคํ„ด์Šคํ™”, API ํ˜ธ์ถœ ๋ฐ ์‘๋‹ต ๊ฒ€์ฆ
    • ์„ค์ • ๋ฐฉ๋ฒ•: MockMVC ์ธ์Šคํ„ด์Šค ์ง์ ‘ ์ƒ์„ฑ or Spring Boot์—์„œ ์ œ๊ณต
    • @AutoConfigureMockMvc
    • ํ˜ธ์ถœํ•  API์— ๋Œ€ํ•ด ์ •์˜(Path, Request Spec, Expected Response)
    • ํ•ด๋‹น API ํ˜ธ์ถœ๋กœ ์ธํ•ด ๋ณ€ํ™”๊ฐ€ ์˜ˆ์ƒ๋˜๋Š” ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ๊ฒ€์ฆ ์ง„ํ–‰
  • Database
    • ํ…Œ์ŠคํŠธ : H2 Database๋ฅผ ํ…Œ์ŠคํŠธ ์‹คํ–‰ ์‹œ์ ์— ๊ตฌ๋™
    • @activeprofiles(โ€œtestโ€)
  • Redis
    • EmbeddedRedis ์‚ฌ์šฉ
    • SmartLifeCycle์„ ํ†ตํ•ด Redis ์ƒ๋ช… ์ฃผ๊ธฐ ๊ด€๋ฆฌ

์ ˆ์ฐจ

ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ๊ตฌ์„ฑ ๋ฐฉ์‹

  1. Arrange(์ค€๋น„): ํ…Œ์ŠคํŠธ์— ํ•„์š”ํ•œ ๋ณ€์ˆ˜, ๊ฐ์ฒด ์ƒ์„ฑ
  2. Act(์‹คํ–‰): ํ…Œ์ŠคํŠธ ํ•  ์ฝ”๋“œ ์‹คํ–‰
  3. Assert(๊ฒ€์ฆ): ๊ฒฐ๊ณผ๊ฐ’ ๊ฒ€์ฆํ•˜๊ธฐ

Arrange

  • ์ดˆ๊ธฐ ๋ฐ์ดํ„ฐ ์„ธํŒ…
  • ์œ ์ € ์ƒํƒœ ๊ฒ€์ฆ์„ ์œ„ํ•ด ์œ ์ € ์กฐํšŒ ์‘๋‹ต ์„ค์ •

Act

  • MockMVC
  • Web ์˜์—ญ์˜ ํด๋ž˜์Šค๋ฅผ ์ธ์Šคํ„ด์Šคํ™”, API ํ˜ธ์ถœ ๋ฐ ์‘๋‹ต ๊ฒ€์ฆ
  • ์„ค์ • ๋ฐฉ๋ฒ•: MockMVC ์ธ์Šคํ„ด์Šค ์ง์ ‘ ์ƒ์„ฑ or Spring Boot์—์„œ ์ œ๊ณต

Assert

  • Eventually ๊ฒ€์ฆ
  • ๊ณ ์œ ๊ฐ’์ด ์•„๋‹Œ ๋กœ์ง์„ ํƒ€๊ณ  ๋งŒ๋“ค์–ด์ง€๋Š” ๊ฐ’์— ์ง‘์ค‘ (e.g 1000์› ์ž…๊ธˆ API, ๊ฒฐ๊ณผ๋Š” ์ฒœ์› ์ถ”๊ฐ€๋œ ๊ฐ’)

โœ” ํ•ด์•ผํ•  ์ผ!

  • ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ์ˆœ์„œ๋Œ€๋กœ ํŠน์ • ์ž‘์—…์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
  • IntegrationTestConfig ์ž‘์„ฑ
  • MockMVC
  • H2 Database
  • EmbeddedRedis

Metadata

Metadata

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions