π[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 λ¨μλ‘ ν μ€νΈ μ½λλ₯Ό λλλ κ²μ΄ μΌλ°μ μ΄κ³ λ°λμ§ν λ°©μμ λλ€.