# [[Unit Testing]] ## πŸ“Œ Brief Summary Unit testing(λ‹¨μœ„ ν…ŒμŠ€νŠΈ)은 ν”„λ‘ νŠΈμ—”λ“œ μ‹œμŠ€ν…œμ—μ„œ μ»΄ν¬λ„ŒνŠΈλ‚˜ μ»€μŠ€ν…€ ν›…κ³Ό 같은 κ°œλ³„ λ‘œμ§μ„ λ…λ¦½μ μœΌλ‘œ κ²€μ¦ν•˜λŠ” κ³Όμ •μž…λ‹ˆλ‹€ [1]. 특히 κΈ°μ‘΄ μ½”λ“œλ² μ΄μŠ€λ₯Ό λ¦¬νŒ©ν† λ§ν•  λ•Œ κΈ°λŠ₯이 μ†μƒλ˜μ§€ μ•Šμ•˜λŠ”μ§€ 보μž₯ν•˜λŠ” ν•„μˆ˜μ μΈ λ°©μ–΄ μˆ˜λ‹¨μœΌλ‘œ ν™œμš©λ©λ‹ˆλ‹€ [2, 3]. ν™•μž₯ κ°€λŠ₯(Scalable)ν•œ 폴더 κ΅¬μ‘°μ—μ„œλŠ” μœ μ§€λ³΄μˆ˜μ„±μ„ 높이기 μœ„ν•΄ λ‹¨μœ„ ν…ŒμŠ€νŠΈ νŒŒμΌμ„ λŒ€μƒ μ»΄ν¬λ„ŒνŠΈμ™€ λ™μΌν•œ μœ„μΉ˜μ— λ‘λŠ” 것이 ꢌμž₯λ©λ‹ˆλ‹€ [4, 5]. ## πŸ“– Core Content - **λ¦¬νŒ©ν† λ§μ˜ ν•„μˆ˜ μ„ ν–‰ 쑰건**: λ‚―μ„  React μ½”λ“œλ² μ΄μŠ€λ‚˜ λ ˆκ±°μ‹œ μ½”λ“œλ₯Ό λ¦¬νŒ©ν† λ§ν•  λ•Œ(예: TypeScript λ³€ν™˜, ν•¨μˆ˜ν˜• μ»΄ν¬λ„ŒνŠΈ 및 ν›…(Hooks) λ„μž… λ“±) **κ°€μž₯ λ¨Όμ € λ‹¨μœ„ ν…ŒμŠ€νŠΈλ₯Ό μž‘μ„±ν•˜λŠ” 것이 κ°•λ ₯히 ꢌμž₯**λ©λ‹ˆλ‹€ [2, 3, 6]. ν…ŒμŠ€νŠΈλ₯Ό μž‘μ„±ν•˜λŠ” κ³Όμ • μžμ²΄κ°€ μ•±μ˜ λ™μž‘ 방식을 μ΄ν•΄ν•˜λŠ” 데 도움을 μ£Όλ©°, μ½”λ“œλ₯Ό κ°œμ„ ν•˜λŠ” κ³Όμ •μ—μ„œ κΈ°λŠ₯이 κΉ¨μ§€λŠ” 것을 μ¦‰κ°μ μœΌλ‘œ μ•Œλ €μ£ΌλŠ” 역할을 ν•©λ‹ˆλ‹€ [2, 7]. - **폴더 ꡬ쑰 및 파일 배치 (Colocation)**: λ‹¨μœ„ ν…ŒμŠ€νŠΈ νŒŒμΌμ€ κ΄€λ ¨λœ μ»΄ν¬λ„ŒνŠΈ 파일λͺ…κ³Ό λ™μΌν•˜κ²Œ μž‘μ„±(예: `Button.test.tsx` [8])ν•˜μ—¬ κ°œλ°œμžκ°€ μ‰½κ²Œ 식별할 수 μžˆλ„λ‘ ν•΄μ•Ό ν•©λ‹ˆλ‹€ [9]. 톡합 ν…ŒμŠ€νŠΈμ˜ 경우 λ³„λ„μ˜ 폴더에 관리할 수 μžˆμ§€λ§Œ, **λ‹¨μœ„ ν…ŒμŠ€νŠΈλŠ” μœ μ§€λ³΄μˆ˜μ„±μ„ κ·ΉλŒ€ν™”ν•˜κΈ° μœ„ν•΄ ν…ŒμŠ€νŠΈ λŒ€μƒ μ»΄ν¬λ„ŒνŠΈλ‚˜ κΈ°λŠ₯(feature)κ³Ό μ΅œλŒ€ν•œ κ°€κΉŒμš΄ λ™μΌν•œ 폴더 내에 배치(colocate)**ν•˜λŠ” 것이 λͺ¨λ²” μ‚¬λ‘€μž…λ‹ˆλ‹€ [4, 5]. - **관심사 뢄리와 ν…ŒμŠ€νŠΈ μš©μ΄μ„±**: 크고 λ³΅μž‘ν•œ μ»΄ν¬λ„ŒνŠΈ λ‚΄λΆ€μ˜ 데이터 νŒ¨μΉ­μ΄λ‚˜ 폼 핸듀링 λ“±μ˜ λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ„ **μ»€μŠ€ν…€ ν›…(Custom Hooks)으둜 λΆ„λ¦¬ν•˜λ©΄, UI 둜직과 λΉ„μ¦ˆλ‹ˆμŠ€ 둜직이 κ²©λ¦¬λ˜μ–΄ 느린 톡합 ν…ŒμŠ€νŠΈ λŒ€μ‹  λΉ λ₯΄κ³  독립적인 λ‹¨μœ„ ν…ŒμŠ€νŠΈλ₯Ό μˆ˜ν–‰**ν•˜κΈ°κ°€ 훨씬 μˆ˜μ›”ν•΄μ§‘λ‹ˆλ‹€ [1]. - **νŒ€ μ›Œν¬ν”Œλ‘œμš° 및 톡합 (CI/CD)**: μ†Œκ·œλͺ¨ νŒ€μ΄λ“  λŒ€κ·œλͺ¨ νŒ€μ΄λ“  μ•ˆμ •μ μΈ Git μ›Œν¬ν”Œλ‘œμš°λ₯Ό μœ„ν•΄, μ½”λ“œλ₯Ό 메인(Main) λΈŒλžœμΉ˜μ— 병합(merge)ν•˜κΈ° μ „μ—λŠ” **λ°˜λ“œμ‹œ λͺ¨λ“  λ‹¨μœ„ ν…ŒμŠ€νŠΈμ™€ CI 체크가 톡과**λ˜λ„λ‘ 보μž₯ν•΄μ•Ό ν•©λ‹ˆλ‹€ [10, 11]. - **μ‚¬μš©λ˜λŠ” μ£Όμš” 도ꡬ**: React와 Viteλ₯Ό μ‚¬μš©ν•˜λŠ” μ΅œμ‹  ν”„λ‘ νŠΈμ—”λ“œ ν™˜κ²½μ—μ„œλŠ” κ²¬κ³ ν•œ λ‹¨μœ„ ν…ŒμŠ€νŠΈλ₯Ό μœ„ν•΄ **Vitest λ˜λŠ” Jest**κ°€ ν™œμš©λ˜λ©° [4], UI μ»΄ν¬λ„ŒνŠΈ ν…ŒμŠ€νŠΈμ—λŠ” **testing-library**λ₯Ό μ‚¬μš©ν•˜λŠ” 방식이 μ–ΈκΈ‰λ©λ‹ˆλ‹€ [7]. ## πŸ”— Knowledge Connections - **Related Topics:** [[Refactoring Techniques]], [[Folder Structure]], [[Custom Hooks]], [[Clean Code Principles]] - **Projects/Contexts:** [[Scalable React Architecture]], [[Git Workflow for Frontend Teams]] - **Contradictions/Notes:** μ „λ°˜μ μœΌλ‘œ λͺ¨λ“  μ½”λ“œμ— ν…ŒμŠ€νŠΈλ₯Ό μž‘μ„±ν•˜λŠ” 것이 ꢌμž₯λ˜μ§€λ§Œ, μž‘μ€ 규λͺ¨μ˜ μ•±μ΄κ±°λ‚˜ μΌνšŒμ„± ν”„λ‘œμ νŠΈμ˜ κ²½μš°μ—λŠ” ꡳ이 ν…ŒμŠ€νŠΈ μž‘μ„±μ— 큰 λ…Έλ ₯을 듀일 ν•„μš”κ°€ 없을 μˆ˜λ„ μžˆλ‹€λŠ” 일뢀 의견이 μ‘΄μž¬ν•©λ‹ˆλ‹€ [12]. --- *Last updated: 2026-04-26*