Home > Backend Development > πŸ“š[Backend Development] κΈ°λ³Έ λ‹¨μœ„ ν…ŒμŠ€νŠΈλŠ” μ–΄λ–€ λ‹¨μœ„λ‘œ ν•΄μ•Όν• κΉŒ?

πŸ“š[Backend Development] κΈ°λ³Έ λ‹¨μœ„ ν…ŒμŠ€νŠΈλŠ” μ–΄λ–€ λ‹¨μœ„λ‘œ ν•΄μ•Όν• κΉŒ?
Backend Ddevelopment Test Server Build System

πŸ“š[Backend Development] κΈ°λ³Έ λ‹¨μœ„ ν…ŒμŠ€νŠΈλŠ” μ–΄λ–€ λ‹¨μœ„λ‘œ ν•΄μ•Όν• κΉŒ?

μ‹€λ¬΄μ—μ„œλŠ” κΈ°λ³Έ λ‹¨μœ„ ν…ŒμŠ€νŠΈλ₯Ό 보톡 각 계측(λ ˆμ΄μ–΄) λ³„λ‘œ λ‚˜λˆ„μ–΄ μž‘μ„±ν•˜λŠ” 것이 일반적이며 ꢌμž₯λ˜λŠ” λ°©μ‹μž…λ‹ˆλ‹€.
μ•„λž˜μ™€ 같이 κ³„μΈ΅λ³„λ‘œ λ‚˜λˆ„μ–΄ κ΄€λ¦¬ν•¨μœΌλ‘œμ¨ ν…ŒμŠ€νŠΈμ˜ λͺ©μ κ³Ό λ²”μœ„λ₯Ό λͺ…ν™•νžˆ ꡬ뢄할 수 있고, μœ μ§€λ³΄μˆ˜μ„±κ³Ό 가독성이 μ’‹μ•„μ§‘λ‹ˆλ‹€.


βœ… μ‹€λ¬΄μ—μ„œ κ³„μΈ΅λ³„λ‘œ λ‚˜λˆ„λŠ” λ‹¨μœ„ ν…ŒμŠ€νŠΈ ꡬ쑰

계측 ν…ŒμŠ€νŠΈ λͺ…μΉ­ μ˜ˆμ‹œ 파일λͺ… μ£Όμš” ν…ŒμŠ€νŠΈ λŒ€μƒ
Entity Entity λ‹¨μœ„ ν…ŒμŠ€νŠΈ UserTest.java λΉ„μ¦ˆλ‹ˆμŠ€ λ©”μ„œλ“œ, equals/hashCode, μœ νš¨μ„± 검사 λ“±
Repository Repository λ‹¨μœ„ ν…ŒμŠ€νŠΈ UserRepositoryTest.java 쿼리 λ©”μ„œλ“œ, JPA λ™μž‘ 검증, 쿼리 κ²°κ³Ό 확인
Service Service λ‹¨μœ„ ν…ŒμŠ€νŠΈ UserServiceTest.java μ„œλΉ„μŠ€ 둜직, νŠΈλžœμž­μ…˜ 처리, μ˜ˆμ™Έ 처리
Controller Controller λ‹¨μœ„ ν…ŒμŠ€νŠΈ UserControllerTest.java API μš”μ²­/응닡, μƒνƒœ μ½”λ“œ, DTO λ§€ν•‘
Integration 톡합 ν…ŒμŠ€νŠΈ UserIntegrationTest.java μ„œλΉ„μŠ€ + DB + 인증 λ“± 볡합 μ‹œλ‚˜λ¦¬μ˜€

βœ… μ˜ˆμ‹œ ꡬ쑰 (Spring Boot κΈ°μ€€)

src/test/java/com/example/project/
β”œβ”€β”€ entity/
β”‚   └── UserTest.java
β”œβ”€β”€ repository/
β”‚   └── UserRepositoryTest.java
β”œβ”€β”€ service/
β”‚   └── UserServiceTest.java
β”œβ”€β”€ controller/
β”‚   └── UserControllerTest.java
└── integration/
    └── UserIntegrationTest.java

βœ… 이유: μ™œ κ³„μΈ΅λ³„λ‘œ λ‚˜λˆ„λŠ”κ°€?

이유 μ„€λͺ…
μ±…μž„ λͺ…ν™•ν™” μ–΄λ–€ λ¬Έμ œκ°€ λ°œμƒν–ˆλŠ”μ§€ λΉ λ₯΄κ²Œ νŒŒμ•… κ°€λŠ₯
ν…ŒμŠ€νŠΈ μœ μ§€λ³΄μˆ˜ 용이 ν…ŒμŠ€νŠΈ λ²”μœ„κ°€ 쒁아져 디버깅 및 μˆ˜μ •μ΄ 쉬움
계측 뢄리 섀계와 맞물림 도메인/μ„œλΉ„μŠ€/컨트둀러 λ ˆμ΄μ–΄ 섀계 μ² ν•™ 반영
ν…ŒμŠ€νŠΈ 컀버리지 ν–₯상 각 λ ˆμ΄μ–΄λ₯Ό λ…λ¦½μ μœΌλ‘œ κ²€μ¦ν•˜λ―€λ‘œ 빠짐없이 ν…ŒμŠ€νŠΈ κ°€λŠ₯

βœ… 싀무 팁

  • @SpringBootTest λŠ” 톡합 ν…ŒμŠ€νŠΈμ—μ„œλ§Œ μ‚¬μš©ν•˜κ³ , λ‹¨μœ„ ν…ŒμŠ€νŠΈμ—μ„œλŠ” Mockito/MockMvc 쑰합을 주둜 μ‚¬μš©
  • Repository ν…ŒμŠ€νŠΈλŠ” H2 + @DataJpaTest 둜, Service ν…ŒμŠ€νŠΈλŠ” @MockBean으둜 Repository μ£Όμž…
  • Entity ν…ŒμŠ€νŠΈλŠ” 순수 Java λ‹¨μœ„ ν…ŒμŠ€νŠΈλ‘œ 처리

πŸ™Œ κ²°λ‘ 

βœ… μ‹€λ¬΄μ—μ„œλŠ” Entity, Repository, Service, Controller λ‹¨μœ„λ‘œ ν…ŒμŠ€νŠΈ μ½”λ“œλ₯Ό λ‚˜λˆ„λŠ” 것이 일반적이고 λ°”λžŒμ§ν•œ λ°©μ‹μž…λ‹ˆλ‹€.