๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐ŸŽ iOS/iOS

[iOS] TDD์™€ Unit Test

TDD(Test-Driven Development)

ํ…Œ์ŠคํŠธ ์ฃผ๋„ ๊ฐœ๋ฐœ(Test-driven development TDD)์ด๋ž€, ๋ฐ˜๋ณต ํ…Œ์ŠคํŠธ๋ฅผ ์ด์šฉํ•œ ์†Œํ”„ํŠธ์›จ์–ด ๋ฐฉ๋ฒ•๋ก ์œผ๋กœ,

๋งค์šฐ ์งง์€ ๊ฐœ๋ฐœ ์‚ฌ์ดํด์„ ๋ฐ˜๋ณตํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. 

TDD ๊ฐœ๋ฐœ์ฃผ๊ธฐ

  • Red: ์‹คํŒจํ•˜๋Š” ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ
  • Green: ์‹คํŒจํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผํ•˜๊ธฐ ์œ„ํ•œ ์ตœ์†Œํ•œ์˜ ์ฝ”๋“œ ๋ณ€๊ฒฝ (ํ…Œ์ŠคํŠธ์— ์„ฑ๊ณต)
  • Refactor: ํ…Œ์ŠคํŠธ์˜ ์„ฑ๊ณต์„ ์œ ์ง€ํ•˜๋ฉด์„œ ์ฝ”๋“œ๋ฅผ ๋” ๋‚˜์€ ๋ฐฉํ–ฅ์œผ๋กœ ๊ฐœ์„ 

์ผ๋ฐ˜ ๊ฐœ๋ฐœ ๋ฐฉ์‹ vs. TDD ๊ฐœ๋ฐœ ๋ฐฉ์‹

์ผ๋ฐ˜์ ์ธ ๊ฐœ๋ฐœ ๋ฐฉ์‹

 

์ผ๋ฐ˜์ ์ธ ๊ฐœ๋ฐœ ๋ฐฉ์‹์€ ์š”๊ตฌ์‚ฌํ•ญ ๋ถ„์„ → ์„ค๊ณ„ → ๊ฐœ๋ฐœ → ํ…Œ์ŠคํŠธ → ๋ฐฐํฌ์˜ ํ˜•ํƒœ์˜ ๊ฐœ๋ฐœ ์ฃผ๊ธฐ๋ฅผ ๊ฐ–์Šต๋‹ˆ๋‹ค.

ํ•ด๋‹น ๋ฐฉ์‹์—์„œ๋Š” ์„ค๊ณ„์— ๋”ฐ๋ผ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ์„ ์™„๋ฃŒํ•œ ํ›„ ๋ฐฐํฌํ•˜๊ธฐ ์ „, ํ•ด๋‹น ์ฝ”๋“œ์˜ ์•ˆ์ •์„ฑ์ด๋‚˜ ๋ฒ„๊ทธ๊ฐ€ ์—†๋Š”์ง€๋ฅผ ๊ฒ€์‚ฌํ•˜๊ธฐ ์œ„ํ•ด ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ณผ์ •์„ ๊ฑฐ์นฉ๋‹ˆ๋‹ค.

๋งŒ์•ฝ ๊ฐœ๋ฐœ ์™„๋ฃŒ ํ›„ ์†Œ๋น„์ž์˜ ์š”๊ตฌ์‚ฌํ•ญ์ด ๋ณ€๊ฒฝ๋˜์–ด ์„ค๊ณ„๊ฐ€ ๋ณ€๊ฒฝ๋œ๋‹ค๋ฉด?

์ž‘์€ ๋ถ€๋ถ„์˜ ๊ธฐ๋Šฅ ์ˆ˜์ •์—๋„ ๋ชจ๋“  ๋ถ€๋ถ„์„ ๋‹ค์‹œ ํ…Œ์ŠคํŠธํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ „์ฒด์ ์ธ ๋ฒ„๊ทธ๋ฅผ ๊ฒ€์ถœํ•˜๊ธฐ ์–ด๋ ค์›Œ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์ž์ฒด ๋ฒ„๊ทธ ๊ฒ€์ถœ ๋Šฅ๋ ฅ์ด ์ €ํ•˜๋˜๊ณ  ์†Œ์Šค์ฝ”๋“œ์˜ ํ’ˆ์งˆ ๋˜ํ•œ ์ €ํ•˜๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ˆ˜์ •์ด ๋ฐ˜๋ณต๋˜๋‹ค ๋ณด๋ฉด ์žฌ์‚ฌ์šฉ๊ณผ ๊ด€๋ฆฌ๊ฐ€ ์–ด๋ ค์šด ์ฝ”๋“œ๋“ค์ด ๋งŽ์•„์ง€๊ณ  ๊ฒฐ๊ตญ ํ”„๋กœ์ ํŠธ์˜ ์œ ์ง€๋ณด์ˆ˜๋ฅผ ์–ด๋ ต๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

TDD ๊ฐœ๋ฐœ ๋ฐฉ์‹

 

TDD ๊ฐœ๋ฐœ ๋ฐฉ์‹์€ ์ผ๋ฐ˜์ ์ธ ๊ฐœ๋ฐœ ๋ฐฉ์‹๊ณผ ๋ฐ˜๋Œ€๋กœ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด์„œ ์‹ค์ œ ์ฝ”๋“œ๋ฅผ ์™„์„ฑ์‹œ์ผœ ๋‚˜๊ฐ‘๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋„์ค‘ ์˜ˆ์™ธ ์‚ฌํ•ญ(๋ฒ„๊ทธ ๋ฐ ์ˆ˜์ •์‚ฌํ•ญ)์ด ๋ฐœ์ƒํ•˜๋”๋ผ๋„ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์— ์ถ”๊ฐ€ํ•˜๊ณ  ์„ค๊ณ„๋ฅผ ๊ฐœ์„ ํ•ฉ๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ๊ฐ€ ํ†ต๊ณผ๋œ ์ฝ”๋“œ๋งŒ์„ ์‹ค์ œ ์ฝ”๋“œ๋กœ ์ž‘์„ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ฝ”๋“œ์˜ ๋ฒ„๊ทธ๊ฐ€ ์ค„์–ด๋“ค๊ณ  ์†Œ์Šค์ฝ”๋“œ๋Š” ๊ฐ„๊ฒฐํ•ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์žฌ์„ค๊ณ„ ์‹œ๊ฐ„ ์ ˆ๊ฐ์œผ๋กœ ์ด์–ด์ง‘๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ, TDD๋ฅผ ํ†ตํ•ด ์•ˆ์ „ํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋‹ค๋ณด๋ฉด ์˜์กด์„ฑ์ด ๋‚ฎ์€ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ฒŒ ๋˜๊ณ , ์ „์ฒด ์ฝ”๋“œ์˜ ์œ ์ง€ ๋ณด์ˆ˜๊ฐ€ ์šฉ์ดํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

 

์ด๋ ‡๊ฒŒ๋งŒ ๋ณด๋ฉด TDD๊ฐ€ ์žฅ๊ธฐ์ ์ธ ๊ด€์ ์—์„œ ํ›จ์”ฌ ์ข‹์€ ๊ฒƒ ๊ฐ™์€๋ฐ ์™œ TDD ๋ฐฉ์‹์œผ๋กœ ๊ฐœ๋ฐœํ•˜์ง€ ์•Š์„๊นŒ์š”??

TDD์˜ ์น˜๋ช…์ ์ธ ๋‹จ์ ์€ ๊ฐœ๋ฐœ ์†๋„์ž…๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ๋ฅผ ํ•˜๋ฉด์„œ ์‹ค์ œ ์ฝ”๋“œ๋ฅผ ์™„์„ฑํ•˜๋Š” ๊ณผ์ •์—์„œ ์•ˆ์ „ํ•จ์€ ๋ณด์žฅ๋˜๊ฒ ์ง€๋งŒ ๋งค๋ฒˆ ๊ทธ ๊ณผ์ •์„ ๊ฑฐ์นœ๋‹ค๋ฉด ๋‹น์—ฐํžˆ ์ง„ํ–‰ ์†๋„๊ฐ€ ์ €ํ•˜๋ฉ๋‹ˆ๋‹ค.

Unit Test

TDD ๊ฐœ๋ฐœ ๋ฐฉ์‹์—์„œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” ๋ช‡๊ฐ€์ง€๊ฐ€ ์žˆ๋Š”๋ฐ, ๊ทธ์ค‘ Unit Test(๋‹จ์œ„ ํ…Œ์ŠคํŠธ)์— ๋Œ€ํ•ด ์•Œ์•„๋ด…์‹œ๋‹ค.

 

์œ ๋‹› ํ…Œ์ŠคํŠธ(Unit Test)๋Š” ๋‹ค๋ฅธ ๋ง๋กœ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ผ๊ณ ๋„ ํ•ฉ๋‹ˆ๋‹ค.

ํ•˜๋‚˜์˜ ํ•จ์ˆ˜, ๋ฉ”์„œ๋“œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋…๋ฆฝ์ ์œผ๋กœ ์ง„ํ–‰๋˜๋Š” ๊ฐ€์žฅ ์ž‘์€ ๋‹จ์œ„์˜ ํ…Œ์ŠคํŠธ๋กœ, ๋ฉ”์„œ๋“œ๋ฅผ ํ•˜๋‚˜ํ•˜๋‚˜ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ๋งฅ๋ฝ์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

Unit Test์˜ ์žฅ์ 

  • ํ•ด๋‹น ๋ถ€๋ถ„(๋ฉ”์„œ๋“œ)์— ๋Œ€ํ•ด์„œ ๋…๋ฆฝ์ ์œผ๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋น ๋ฅธ ๋ฆฌํŒฉํ† ๋ง ๋ฐ˜์˜๊ณผ ๋น ๋ฅธ ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  • ์ฝ”๋“œ์˜ ํ™•์žฅ์ด๋‚˜ ๋ฆฌํŒฉํ† ๋ง ์‹œ์—๋„ ์•ˆ์ •์„ฑ์„ ํ™•๋ณดํ•œ ์ฑ„๋กœ ๋น ๋ฅด๊ฒŒ ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

FIRST ์›์น™

์ข‹์€ ์œ ๋‹› ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด ์ง€์ผœ์•ผ ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์†Œ๊ฐœ๋˜๋Š” FIRST๋ผ๋Š” ์›์น™์ด ์žˆ์Šต๋‹ˆ๋‹ค. (๊ผญ ์ง€์ผœ์•ผ๋งŒ ํ•œ๋‹ค!๋Š” ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ ์ด๋Ÿฌํ•œ ์›์น™๋“ค์„ ์—ผ๋‘์— ๋‘๊ณ  ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ์ข‹์€ ์œ ๋‹› ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.)

 

Fast

ํ…Œ์ŠคํŠธ๋Š” ๋น ๋ฅด๊ฒŒ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ์— ๋„ˆ๋ฌด ๋งŽ์ด ๋“ค์ด๋Š” ๊ฒƒ์€ ์ข‹์ง€ ์•Š๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค.

 

Independent/Isolated

๊ฐ๊ฐ์˜ ํ…Œ์ŠคํŠธ๋Š” ์„œ๋กœ ๋…๋ฆฝ์ ์ด๋ฉฐ ์„œ๋กœ ์˜์กดํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

์ข‹์€ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋Š” ์ตœ์†Œํ•œ์˜ ๋‹จ์œ„์˜ ํ…Œ์ŠคํŠธ์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๊ฐ ํ…Œ์ŠคํŠธ๋“ค์ด ์„œ๋กœ์—๊ฒŒ ์˜ํ–ฅ์„ ์ฃผ์–ด์„œ๋Š” ์•ˆ๋ฉ๋‹ˆ๋‹ค.

 

Repeatable

ํ…Œ์ŠคํŠธ๋Š” ์–ธ์ œ ์–ด๋””์„œ๋‚˜ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ๋ฐ˜๋ณต๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ฆ‰, ๋ชจ๋“  ํ™˜๊ฒฝ์„ ํ†ต์ œํ•˜์—ฌ ๋งค๋ฒˆ ์˜ˆ์ƒํ•œ ๊ฒฐ๊ณผ๋Œ€๋กœ ํ…Œ์ŠคํŠธ๊ฐ€ ์ง„ํ–‰๋˜๊ฒŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

Self-Validating

ํ…Œ์ŠคํŠธ๋Š” Bool์„ ์ด์šฉํ•˜์—ฌ ์„ฑ๊ณต/์‹คํŒจ์— ๋Œ€ํ•ด์„œ ์Šค์Šค๋กœ ๊ฒ€์ฆ์ด ๊ฐ€๋Šฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ๋‚ด๋ถ€์—์„œ ์ด ํ…Œ์ŠคํŠธ๊ฐ€ ์ž˜ ๋™์ž‘ํ–ˆ๋Š”์ง€๋ฅผ ํŒ๋ณ„ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

Timely

์ด์ƒ์ ์ธ ํ…Œ์ŠคํŠธ๋Š” ํ…Œ์ŠคํŠธํ•˜๋ ค๋Š” ์‹ค์ œ ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์ง์ „์— ๊ตฌํ˜„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Xcode์—์„œ Unit Test ํ•ด๋ณด๊ธฐ

Xcode์—์„œ ์‹ค์ œ๋กœ Unit Test๋ฅผ ์–ด๋–ป๊ฒŒ ํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”??

ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ํŒŒ์ผ ์ƒ์„ฑํ•˜๊ธฐ

 

Xcode์—์„œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” ๋‘๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค!

์œ„ ์ด๋ฏธ์ง€์ฒ˜๋Ÿผ ์ƒˆ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ์‹œ Include Tests๋ฅผ ์ฒดํฌํ•ด ์ฒ˜์Œ๋ถ€ํ„ฐ ํ…Œ์ŠคํŠธ ํŒŒ์ผ์„ ์ƒ์„ฑํ•ด์ฃผ๊ฑฐ๋‚˜, ๊ธฐ์กด ํ”„๋กœ์ ํŠธ์—์„œ + ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•ด์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ๋ณธ Unit Test ํด๋ž˜์Šค

 

1. ํ”„๋กœ์ ํŠธ ์ฝ”๋“œ์— ์ ‘๊ทผํ•˜๊ธฐ

@testable import ํ”„๋กœ์ ํŠธ ์ด๋ฆ„ ์ด๋ผ๋Š” ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ๊ธฐ์กด ํ”„๋กœ์ ํŠธ์˜ ์ฝ”๋“œ์— ์ ‘๊ทผํ•ด ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

2. ๊ธฐ๋ณธ ๋ฉ”์„œ๋“œ

ํ…Œ์ŠคํŠธ ํŒŒ์ผ์„ ์—ด์–ด๋ณด๋ฉด ๊ธฐ๋ณธ์œผ๋กœ ์ƒ์„ฑ๋˜์–ด์žˆ๋Š” ๋ฉ”์„œ๋“œ๊ฐ€ ๋„ค ๊ฐ€์ง€ ์žˆ๋Š”๋ฐ์š”,

์–ด์ฐจํ”ผ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ƒˆ๋กœ ์ž‘์„ฑํ•  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์•„๋ž˜์˜ ๋‘ ๊ฐ€์ง€ ๋ฉ”์„œ๋“œ๋Š” ์‚ญ์ œํ•ด๋„ ๋ฌด๋ฐฉํ•ฉ๋‹ˆ๋‹ค. (์ƒ˜ํ”Œ ๋ฉ”์„œ๋“œ)

์œ„์˜ ๋‘ ๊ฐ€์ง€ ๋ฉ”์„œ๋“œ์— ๋Œ€ํ•ด์„œ๋งŒ ์‚ดํŽด๋ณผ๊ฒŒ์š”!

  • setUpWithError(): ํ…Œ์ŠคํŠธ ๋ฉ”์„œ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์ „ ๋ชจ๋“  ์ƒํƒœ๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๋ฉ”์„œ๋“œ
  • tearDownWithError(): ํ…Œ์ŠคํŠธ ๋ฉ”์„œ๋“œ ๋™์ž‘ ํ›„์— ๋ชจ๋“  ์ƒํƒœ๋ฅผ ํ•ด์ œํ•˜๋Š” ๋ฉ”์„œ๋“œ

๋ชจ๋“  ํ…Œ์ŠคํŠธ ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋˜๊ธฐ ์ „ setUpWithError() ๊ฐ€, ์‹คํ–‰ ํ›„ tearDownWithError() ๊ฐ€ ์‹คํ–‰๋˜๋Š”๋ฐ์š”, 

์ด๋Š” ๋…๋ฆฝ์ ์ธ ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด์„œ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

 

3. ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ ํ™•์ธ

ํ…Œ์ŠคํŠธ์— ์„ฑ๊ณตํ•˜๋Š” ๊ฒฝ์šฐ ์™ผ์ชฝ ํ•จ์ˆ˜ ์•ž์— ์œ„์น˜ํ•œ ๋งˆ๋ฆ„๋ชจ๊ฐ€ ์ดˆ๋ก์ƒ‰์œผ๋กœ, ์‹คํŒจํ•˜๋Š” ๊ฒฝ์šฐ ๋นจ๊ฐ„์ƒ‰์œผ๋กœ ํ‘œ์‹œ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑํ•˜๊ธฐ

ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋Š” Test Assertion ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•ด ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

XCTest ๊ณต์‹ ๋ฌธ์„œ์— ๋‹ค์–‘ํ•œ ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ์œผ๋‹ˆ ํ…Œ์ŠคํŠธํ•˜๋ ค๋Š” ์ฝ”๋“œ์— ๋งž๊ฒŒ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค!

 

 

XCTest | Apple Developer Documentation

Create and run unit tests, performance tests, and UI tests for your Xcode project.

developer.apple.com


[์ฐธ๊ณ  ์ž๋ฃŒ]

 

TDD๋ž€? ํ…Œ์ŠคํŠธ ์ฃผ๋„ ๊ฐœ๋ฐœ - ํ•˜๋‚˜๋ชฌ

TDD๋ž€ Test Driven Development์˜ ์•ฝ์ž๋กœ 'ํ…Œ์ŠคํŠธ ์ฃผ๋„ ๊ฐœ๋ฐœ'์ด๋ผ๊ณ  ํ•œ๋‹ค.

hanamon.kr

 

Unit Test ์ž‘์„ฑํ•˜๊ธฐ - ์•ผ๊ณฐ๋‹ท๋„ท

Unit Test ์ž‘์„ฑํ•˜๊ธฐ ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ์ข‹๋‹ค๋Š” ๋ง์„ ๋งŽ์ด ๋“ค์–ด๋ณด์…จ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.  ํ•˜์ง€๋งŒ ๋ง‰์ƒ ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•ด๋ณด๋ ค๊ณ  […]

yagom.net

+ ํƒœ๋ผ๊ฐ€ ๊ณต์œ ํ•ด์ค€ ๊ธฐ๊น”๋‚˜๋Š” ์ •๋ฆฌ ์ž๋ฃŒ (๋•ก์Šคํˆฌ ํƒœ๋ผ์„ ๋ฐฐ)