์ด๋ฒ ๊ณผ์ ๋ฅผ ์งํํ๋ฉด์ ๊ฐ์ฅ ํ์์ฑ์ ์ ์คํ ๋๊ผ๋ ๊ฒ์ด ๋ฐ๋ก ์ด test์๋ค. ์ฌ๊ธฐ๊น์ง๋ ๋ฌธ์ ๊ฐ ์๋ค๋ ๊ฒ์, ์์ ํ๋ค๋ ๊ฒ์ ํ์ ํ๊ณ ๋ค์ ์ฝ๋๋ฅผ ์ง๊ณ ์ถ์ ๊ทธ ๋ง์..!! ๊ทธ๋ฐ๋ฐ ๋ง์นจ ํ๋ํ์ต์์ Unit Test์ TDD๊ฐ ๋์๊ธธ๋, ์ ๋ฆฌํด๋ณด์๋ค.
Unit Test
Unit Test๋ ๋ฉ์๋๋ณ ๊ธฐ๋ฅ์ด ์๋ํ ๋๋ก ๊ตฌํ๋์ด ์๋์ง ๊ฒ์ฆํ๋ ๊ฒ์ด๋ค. ์์ค ์ฝ๋์ ํน์ ๋ชจ๋์ด ์๋๋๋๋ก ์ ํํ ์๋ํ๋์ง ๊ฒ์ฆํ๋ ์ ์ฐจ๋ฅผ ํตํด ์์ฑํ ์ฝ๋์ ์์ ์ฑ์ ๋ถ์ฌํ๋ค.
๊ทธ๋ ๋ค๋ฉด ์ด๋ค Test๋ฅผ ์์ฑํด์ผ ํ ๊น?
FIRST ์์น
Fast ๋น ๋ฅด๊ฒ
Independent / Isolated ๋ ๋ฆฝ์ ์ผ๋ก
Repeatable ๋ฐ๋ณต ๊ฐ๋ฅํ
Self-Validating ์ค์ค๋ก ๊ฒ์ฆํ๋
Timely ์ ์์
F. ํ ์คํธ๋ผ๋ ๋ชฉ์ ์ ๋ง๊ฒ ๋น ๋ฅด๊ฒ ๋ง์ ์๊ฐ์ ๋ค์ด์ง ์์์ผ ํ๋ค.
I. A ํ ์คํธ๊ฐ B๋ C ํ ์คํธ์ ์ํฅ์ ๋ผ์น์ง ์์์ผ ํ๋ค.
R. ์ด๋ค ์ํฉ์ ํ ์คํธ๋ฅผ ํ๋๋ผ๋, ์คํ ๊ฐ๋ฅํด์ผ ํ๋ค. (๋คํธ์ํฌ -> Mock ๊ฐ์ฒด)
S. ํ ์คํธ ๋ด๋ถ์์ ํ ์คํธ๊ฐ ์ด๋ฃจ์ด์ ธ์ผ ํ๋ค. (์ฆ, ํ๋ณ ๊ฐ๋ฅํ ์์๊ฐ ์ ๋ถ ํ ์คํธ ๋ด๋ถ์ ์กด์ฌํด์ผ ํ๋ค.)
T. ์ฝ๋ ์์ฑ ์ง์ ์ ํ ์คํธ๋ฅผ ์์ฑํด๋ณด์. (TDD)
์์ ๊ฐ์ FIRST ์์น์ ๊ธฐ๋ฐ์ผ๋ก ์์ฑํ๋ค. ๋ค๋ง ์ด์ค์์ TDD๋ Test-Driven Development๋ก ๊ฐ๋ฐ์ ํ๊ณ ์ ํ๋ ๋ฐฉ๋ฒ๋ก ์ ์ด์ผ๊ธฐํ๋ค. ๋ฐ๋ก ๋ด๋ณด๋ ๊ฒ์ด ์ข์ ๋ฏ ํ๋ค.
Xcode์์
1. import
import XCTest
@testable import (ํ
์คํธ ํ๊ณ ์ถ์ ํ๋ก์ ํธ)
2. test Class
class Tests: XCTestCase {
var sut: (Testํ๊ณ ์ถ์ ๊ฐ์ฒด)!
}
:sut๋ System Under Test์ ์ฝ์๋ก ์คํ์ค์ธ ์์คํ ์ ๋ํ๋ธ๋ค.
: ์ ๊ฐ์ ์ธ๋ํ์ ํ ๊น? _ FIRST์ F์ ๋ฐ๋ผ, ๋น ๋ฅด๊ฒ ํ๊ธฐ ์ํด์. + ๊ธฐ๋ฅ์ ๋ฌธ์ ๊ฐ ๋์ง ์๋๋ค.
3. ํ๊ฒฝ์ค์
//์ด๊ธฐ ์คํ ํ๊ฒฝ ์ธํ
.
//ํ
์คํธ๊ฐ ๋์ผํ ์กฐ๊ฑด, ๋์ผํ ํ๊ฒฝ์์ ์คํ๋ ์ ์๋๋ก ๋ง๋ค์ด์ค๋ค.
override func setUpWithError() throws {
sut = LinkedList()
}
//์ธํ
๋ ์คํ ํ๊ฒฝ ์ ๊ฑฐ
//์ด๊ธฐํ
override func tearDownWithError() throws {
sut = nil
}
4. test
func test_์ด๋ ๊ฒ_๊ฐ๋ฅํ์ง() {
//given
์ฌ์ฉํ ๊ฐ
//when
ํ
์คํธ
//then
๊ฒฐ๊ณผ
}
์์
- setUpWithError: ์ด๊ธฐ ์คํํ๊ฒฝ ์ธํ
- func test : ํ ์คํธ ํจ์ ์คํ
- tearDownWithError: ์คํ ํ๊ฒฝ ์ด๊ธฐํ
→ ์ด๋ ๊ฒ 1,2,3์ด ๋ฐ๋ณต๋๋๋ฐ, 2๋ ํ ์คํธ ํจ์๋ค์ด ์์๋๋ก ๋ฐ๋๋ฉด์ ์คํ๋๋ค.
→ ๋ธ๋ ์ดํฌ ํฌ์ธํธ๋ก ์ฐ์ด๋ณด๋ฉด์ ํ์ธํด๋ณด๋ฉด ๋ ํ์คํ๊ฒ ๋ณด์ธ๋ค!
๋ฌผ๋ก ์๊ฐ์ด ๋ง์ด ๋ค๊ณ ์ด๋ ต๊ฒ ์ง๋ง ์์ผ๋ก๋ ์ต๋ํ ํ๋ก์ ํธ์ Unit Test๋ฅผ ํ์ฉํด์ผ๊ฒ ๋ค. ๋ฐ์ฑ, ๋ฐ์ฑ.
'๐ iOS > ๐ Docs' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[SwiftUI] InteractiveUI (Gesture, Animation, Transition) (0) | 2025.04.21 |
---|---|
[๋์์ธ ํจํด]Observer Pattern (1) | 2024.01.27 |