์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- designpattern
- ๋ฐฑ์ค
- Swfit
- combine
- BOJ
- raywenderlich
- ios
- XCTest
- Flutter
- Xcode
- node.js
- realm
- RxSwift
- ํ๋ก๊ทธ๋๋จธ์ค
- reactorkit
- Kuring
- MVVM
- swift
- UIKit
- ํจ์คํธ์บ ํผ์ค
- BFS
- SwiftUI
- rxcocoa
- tableView
- SnapKit
- TCA
- Lv2
- visionOS
- CollectionView
- arkit
- Today
- Total
๋ชฉ๋กโ ๏ธ deprecated โ ๏ธ/ํจ์บ (์ด๊ฒฉ์ฐจ) (16)
lgvv98
โ ์ด๋ฒ ์๊ฐ์๋ ํ ์คํธ์ฝ๋ ๋ฆฌ๋ทฐ ๊ณ ๊ณ ๐ UITest์ฝ๋์ธ๋ฐ BDD๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์ฑํ ์ฝ๋๋ ์์ด // // MovieReviewUITests.swift // MovieReviewUITests // // Created by Hamlit Jason on 2022/01/17. // import XCTest // UITest์ ๊ฒฝ์ฐ์๋ ํ์ ์์๋ ๋คํธ์ํฌ์ ์ฐ๊ฒฐ๋์ด์์ด์ผ ์ฑ์ด ๊ตฌ๋๋๋์ , ๋ํ, ์ฌ๋ฌ๋ฒ ํด๋ฆญํด์ ๊ทธ ์ง์ ์ผ๋ก ๊ฐ์ ์ฌ์ฉํด์ผํ๋ ๋จ์ ์ผ๋ก ์ธํด Unitํ ์คํธ๋ง ์ฃผ๋ก ์ฌ์ฉํ๋ค. class MovieReviewUITests: XCTestCase { var app: XCUIApplication! override func setUp() { super.setUp() continueAfterFailure =..
โ ์ด๋ฒ ์๊ฐ์๋ BDD์ ๋ํด์ ์์๋ณด์. ์๋๋ฆฌ์ค ๊ธฐ๋ฐ์ด๋? ์ฃผ์ด๋๊ป์๋ Given , When, Verify๋ผ๊ณ ํ์ จ๋๋ฐ, ์ด ๋ฐฉ๋ฒ์ด์๊ตฌ๋! ๋คํธ์ํฌ ํต์ ์ ๊ฐ์ ํ๋ฉด Given : ๋คํธ์ํฌ ํต์ ์ด ์คํจํ๋ ์ํ์์ When : ์ ์ ๊ฐ ์๋ก๊ณ ์นจ ๋ฒํผ์ ํญํ์ ๋ Then : ์ ์ ์๊ฒ ์๋ฌ ๋ฉ์์ง๋ฅผ ๋ณด๋ฉฐ์ค๋ค. ํน์ Given : ๋คํธ์ํฌ ํต์ ์ด ์คํจํ๋ ์ํ์์ When : ์ ์ ๊ฐ ์๋ก๊ณ ์นจ ๋ฒํผ์ ํญํ์ง ์์ผ๋ฉด Then : ์ ์ ์๊ฒ ์๋ฌ ๋ฉ์์ง๋ฅผ ๋ณด์ฌ์ฃผ๋ฉด ์๋๋ค.
โ ์ด๋ฒ ์๊ฐ์๋ UI Test์ ๋ํด์ ์์๋ณผ ์์ ์ด์ผ. ์ ๋ ํ ์คํธ์ UI ํ ์คํธ์ ์ฐจ์ด ์ ๋ ํ ์คํธ๋ ํด๋์ค์ ๋ํด์ ์งํํ๊ณ , UI ํ ์คํธ๋ ์ฑ ์์ฒด๋ฅผ ๋ฐ์น ์์ผ์ ์ฌ์ฉํ๋ค. XCUIApplication์ ๋ฌธ์์์ ์ดํด๋ณด๋ฉด ํ๋์ ํด๋์ค์ด๋ค! ๋ นํ๋ฒํผ์ ์ด์ฉํด ์ฝ๋๋ฅผ ์์ฑํ ์๋ ์๋ค. ๋ค๋ง, ๋คํธ์ํฌ๊ฐ ์์ด์ผ ํ๊ฑฐ๋, ์ฌ๋ฌ๋ฒ์ ํญ์ ํตํด ์ด๋ํ ํ๋ฉด ๋ฑ ์ด๋ ค์์ด ์กด์ฌํ์ฌ, Unit Test๋ฅผ ๋ ํ์ฉํ๋ค. ๋ํ ๋ นํ ๋ฒํผ์ ํตํ๋ฉด ์ด๋ป๊ฒ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํด์ผํ๋์ง ์ฝ๊ฒ ํ์ ํ ์ ์์ผ๋ ์ฐธ๊ณ ํ์. ๐ ์๋๋ ์์์ฝ๋ // // MovieReviewUITests.swift // MovieReviewUITests // // Created by Hamlit Jason on 2022/01/17. // imp..
โ MovieReview ์ฝ๋๋ฆฌ๋ทฐ ๊ณ ๊ณ MVP๋ฐฉ์์ผ๋ก ์์ฑ๋์๊ณ ์ฝ์ง ์์์ง๋ง ๊ทธ๋๋ ๋๋ฒ์งธ๋ผ ๊ทธ๋ฐ์ง ์ ์ดํดํ ์ ์์์. ๋ค๋ง ๊ฐ์์ ์ฝ๋์์ ์ฝ๊ฐ์ ๋ฌธ์ ์ ์ด ๋ฐ์ํ์๋๋ฐ, ์ปฌ๋ ์ ๋ทฐ์์ didSelect๋ฅผ ํตํด์ Detail๋ก ์ด๋์ rightBarButton์ด ๊ทธ๋๋ก ๋ ธ์ถ๋์ด ์์ด์ ์ค๋ณต ๊ตฌ๋ ์ด ๊ฐ๋ฅํด์ง๋ค๋ ์ ์ด์๋๋ฐ, ์๊ฐํด๋ณด๋๊น ๊ฐ์์์ remove๋ฅผ ๋ถ์์ ํ๊ฒ ๊ตฌํํ์ ๋ฏ ํ๋ค. โ ํด๋ ๊ตฌ์กฐ ์ฐ์ ํด๋ ๊ตฌ์กฐ๊ฐ ์ด๋ ๊ฒ ๋์ด ์์ด์ ์ด์ ๋ง๊ฒ๋ ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ์งํํด๋ณผ ์์ โ Scene - MovieList ๐ MovieListViewController.swift // // ViewController.swift // MovieReview // // Created by Hamlit Jason on 20..
โ ์ด๋ฒ ์๊ฐ์๋ SwiftLint์ ๋ํด์ ์์๋ณผ ์์ ์ด์ผ. โ SwiftLint๋? ํ๋์ Xcode๋ด์์ Swift ์ฝ๋ ์คํ์ผ์ ํต์ผ์ํฌ ์ ์๊ฒ ๋์์ฃผ๋ ํด Line3์ error๋ฅผ ๋ณด๋ฉด ๊ฒฝ์ฐ์ ๋ฐ๋ผ์ crash๊ฐ ๋ ์ ์๋ ์ฝ๋์ด๊ธฐ ๋๋ฌธ์ ๋นจ๊ฐ์ error๋ฅผ ๋ฐ์์์ผ์ ์ปดํ์ผ์ ๋ง๋๋ค. Line4์ ๊ฒฝ์ฐ์๋ warning์ ํ์ํ๋๋ฐ ์ฝ๋ก ์ ์์น๊ฐ ์์๋ฅผ ๋ถ์ฌ์ฐ๊ณ ๋ค๋ฅผ ๋์ด์ฐ๊ธฐ๋ฅผ ๊ถ์ฅํ๊ธฐ ๋๋ฌธ์ด๋ค. ๋ฌผ๋ก warning์ ๊ฒฝ์ฐ์๋ ์ฐ๋ฆฌ๊ฐ ๊ท์น์ ์ปค์คํ ํ ์๋ ์๋ค. ๋ํ, ์ค์ํํธ ํ์ผ์ ๊ท์น์ ์์ ํ๋ ๋ฐฉ๋ฒ ๊ทธ๋ฐ๋ฐ.. ์์ํ์ ๋ง์ ์๋ฌ๊ฐ ์์ฐฝ ๋จ๋๊ฑฐ์ผ ๊ทธ๋ด๋๋ ํฐ๋ฏธ๋์ ์ด๊ณ ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ์์ vim .swiftlint.yml ์ ์ ๋ ฅํ ํ์ excluded: # ๋ฆฐํธ ๊ณผ์ ์์ ๋ฌด์ํ ..
โ ์ด๋ฒ์๋ XCTest๋ฅผ ์ฝ๋๋ฆฌ๋ทฐ๋ฅผ ํด๋ณผ ๊ณํ์ด์ผ. โ ํ์ผ๊ตฌ์กฐ๋ ๐ ReviewListPresenterTests.swift // // BookReviewTests.swift // BookReviewTests // // Created by Hamlit Jason on 2022/01/07. // import XCTest // ํ ์คํธ ํ๋ ์์ํฌ๋ฅผ import @testable import BookReview // ํ ์คํธ ๋์์ project๋ฅผ ๊ฐ์ ธ์ค๋ ์ฝ๋ class ReviewListPresenterTests: XCTestCase { // ํ ์คํธ ์ผ์ด์ค๋ฅผ ์์ ๋ฐ๊ณ var sut: ReviewListPresenter! // ํ ์คํธ ๋์์ ์ฃผ๋ก sut์ ์ฌ์ฉ //var viewController: Mock..