[iOS, Swift] 단위 테스트 중에 언제든지 ViewDidLoad(), ViewWill(Did)Appear(), ViewWill(Did)Disappear()를 호출하는 방법
14280 단어 iOSSwiftViewContollerunittest
사전 준비
다음과 같은 View Controller(Initial View Controller)를 작성합니다.
HogeViewController.swift
import UIKit
class HogeViewController: UIViewController {
// ViewDidLoad()用フラグ
var isViewDidLoadCalled = false
// ViewWill(Did)Appear()用フラグ
var isViewWillAppearCalled = false
var isViewDidAppearCalled = false
// ViewWill(Did)Disappear()用フラグ
var isViewWillDisappearCalled = false
var isViewDidDisappearCalled = false
// MARK: - View Controller Lifecycle Methods
override func viewDidLoad() {
super.viewDidLoad()
self.isViewDidLoadCalled = true
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.isViewWillAppearCalled = true
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
self.isViewDidAppearCalled = true
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
self.isViewWillDisappearCalled = true
}
override func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
self.isViewDidDisappearCalled = true
}
}
그런 다음 이 View Controller를 테스트하는 파일을 만들고 다음과 같은 설정을 수행합니다.
HogeViewControllerTests.swift
import XCTest
@testable import InvokeVCLifecycleMethods
class HogeViewControllerTests: XCTestCase {
var hogeVC: HogeViewController!
override func setUp() {
super.setUp()
let storyboard = UIStoryboard(name: "Main", bundle: nil)
hogeVC = storyboard.instantiateInitialViewController() as! HogeViewController
}
override func tearDown() {
super.tearDown()
}
func test_ViewDidLoad_Called() {
XCTAssertTrue(hogeVC.isViewDidLoadCalled)
}
func test_ViewWillAndDidAppear_Called() {
XCTAssertTrue(hogeVC.isViewWillAppearCalled)
XCTAssertTrue(hogeVC.isViewDidAppearCalled)
}
func test_ViewWillAndDidDisappear_Called() {
XCTAssertTrue(hogeVC.isViewWillDisappearCalled)
XCTAssertTrue(hogeVC.isViewDidDisappearCalled)
}
}
이 상태에서 테스트를 실행하면 모든 테스트가 실패합니다.
이것으로 사전 준비가 완료됩니다.
View Controller LifeCycle 메서드 호출
그럼 조속히, 각종 메소드를 호출해 갑시다.
ViewDidLoad()
ViewDidLoad()는 View Controller의 view
속성에 액세스하여 호출할 수 있습니다.
[추기] ㅎㅎㅎ 씨로부터 view
에의 액세스가 아니라 loadViewIfNeeded()
로 ViewDidLoad()
를 호출하는 방법을 가르쳐 주셨습니다. 감사합니다!
func test_ViewDidLoad_Called() {
// ViewDidLoad()を呼び出す
hogeVC.loadViewIfNeeded()
XCTAssertTrue(hogeVC.isViewDidLoadCalled)
}
결과
Pass했습니다.
ViewWill(Did)Appear()
ViewWillAppear()
는 UIViewController 에 beginAppearanceTransition(_:animated:) 이라는 인스턴스 메소드가 준비되어 있으며, 그 첫 번째 인수( _ isAppearing: Bool
)를 true
로 호출하여 호출할 수 있습니다. ViewDidAppear()
는, 그 인스턴스 메소드를 호출한 후에 endAppearanceTransition() 를 호출하는 것으로 호출할 수 있습니다.
// ViewWillAppear()を呼び出す(第一引数をtrueにする)
hogeVC.beginAppearanceTransition(true, animated: false)
// ViewDidAppear()を呼び出す
hogeVC.endAppearanceTransition()
결과
이것도 Pass했습니다.
ViewWill(Did)Disappear()
ViewWillDisappear()
는 이전 beginAppearanceTransition(_:animated:)의 첫 번째 인수 ( _ isAppearing: Bool
)를 false
로 호출하여 호출 할 수 있습니다. ViewDidDisappear()
는 endAppearanceTransition()을 호출하여 호출 할 수 있습니다.
func test_ViewWillAndDidDisappear_Called() {
// ViewWillDisappear()を呼び出す(第一引数をfalseにする)
hogeVC.beginAppearanceTransition(false, animated: false)
// ViewDidDisappear()を呼び出す
hogeVC.endAppearanceTransition()
XCTAssertTrue(hogeVC.isViewWillDisappearCalled)
XCTAssertTrue(hogeVC.isViewDidDisappearCalled)
}
결과
모두 Pass했습니다.
유닛 테스트를 작성할 때 활용하십시오.
참고
Work with View Controllers
htps : //로 ゔぇぺぺr. 아 ぇ. 코 m / ぃ b 등 ry / 혼텐 t / 레후 렌세 ぃ b 등 ry / 갓찐 gS 타 d / ゔ ぇw 콘 t 롯 rs. HTML )
[추기] loadViewIfNeeded()
htps : //로 ゔぇぺぺr. 아 ぇ. 코 m / 도쿠 멘 타치 온 / 우이 키 t / 우이 우에 w t t ro r / 1621446
beginAppearanceTransition(_:animated:)
htps : //로 ゔぇぺぺr. 아 ぇ. 코 m / 도쿠 멘 타치 온 / 우이 키 t / 우이 우에 w t t 로페 r / 1621387
endAppearanceTransition()
htps : //로 ゔぇぺぺr. 아 ぇ. 코 m / 도쿠 멘 타치 온 / 우이 키 t / 우이 우에 w t t 로페 r / 1621503
iOS: The One Weird Trick For Testing View Controllers in Swift
Testing in Swift
Reference
이 문제에 관하여([iOS, Swift] 단위 테스트 중에 언제든지 ViewDidLoad(), ViewWill(Did)Appear(), ViewWill(Did)Disappear()를 호출하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mii-chan/items/a9d8fd420d04b92a1c34
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import UIKit
class HogeViewController: UIViewController {
// ViewDidLoad()用フラグ
var isViewDidLoadCalled = false
// ViewWill(Did)Appear()用フラグ
var isViewWillAppearCalled = false
var isViewDidAppearCalled = false
// ViewWill(Did)Disappear()用フラグ
var isViewWillDisappearCalled = false
var isViewDidDisappearCalled = false
// MARK: - View Controller Lifecycle Methods
override func viewDidLoad() {
super.viewDidLoad()
self.isViewDidLoadCalled = true
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.isViewWillAppearCalled = true
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
self.isViewDidAppearCalled = true
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
self.isViewWillDisappearCalled = true
}
override func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
self.isViewDidDisappearCalled = true
}
}
import XCTest
@testable import InvokeVCLifecycleMethods
class HogeViewControllerTests: XCTestCase {
var hogeVC: HogeViewController!
override func setUp() {
super.setUp()
let storyboard = UIStoryboard(name: "Main", bundle: nil)
hogeVC = storyboard.instantiateInitialViewController() as! HogeViewController
}
override func tearDown() {
super.tearDown()
}
func test_ViewDidLoad_Called() {
XCTAssertTrue(hogeVC.isViewDidLoadCalled)
}
func test_ViewWillAndDidAppear_Called() {
XCTAssertTrue(hogeVC.isViewWillAppearCalled)
XCTAssertTrue(hogeVC.isViewDidAppearCalled)
}
func test_ViewWillAndDidDisappear_Called() {
XCTAssertTrue(hogeVC.isViewWillDisappearCalled)
XCTAssertTrue(hogeVC.isViewDidDisappearCalled)
}
}
그럼 조속히, 각종 메소드를 호출해 갑시다.
ViewDidLoad()
ViewDidLoad()는 View Controller의 view
속성에 액세스하여 호출할 수 있습니다.
[추기] ㅎㅎㅎ 씨로부터 view
에의 액세스가 아니라 loadViewIfNeeded()
로 ViewDidLoad()
를 호출하는 방법을 가르쳐 주셨습니다. 감사합니다!
func test_ViewDidLoad_Called() {
// ViewDidLoad()を呼び出す
hogeVC.loadViewIfNeeded()
XCTAssertTrue(hogeVC.isViewDidLoadCalled)
}
결과
Pass했습니다.
ViewWill(Did)Appear()
ViewWillAppear()
는 UIViewController 에 beginAppearanceTransition(_:animated:) 이라는 인스턴스 메소드가 준비되어 있으며, 그 첫 번째 인수( _ isAppearing: Bool
)를 true
로 호출하여 호출할 수 있습니다. ViewDidAppear()
는, 그 인스턴스 메소드를 호출한 후에 endAppearanceTransition() 를 호출하는 것으로 호출할 수 있습니다.
// ViewWillAppear()を呼び出す(第一引数をtrueにする)
hogeVC.beginAppearanceTransition(true, animated: false)
// ViewDidAppear()を呼び出す
hogeVC.endAppearanceTransition()
결과
이것도 Pass했습니다.
ViewWill(Did)Disappear()
ViewWillDisappear()
는 이전 beginAppearanceTransition(_:animated:)의 첫 번째 인수 ( _ isAppearing: Bool
)를 false
로 호출하여 호출 할 수 있습니다. ViewDidDisappear()
는 endAppearanceTransition()을 호출하여 호출 할 수 있습니다.
func test_ViewWillAndDidDisappear_Called() {
// ViewWillDisappear()を呼び出す(第一引数をfalseにする)
hogeVC.beginAppearanceTransition(false, animated: false)
// ViewDidDisappear()を呼び出す
hogeVC.endAppearanceTransition()
XCTAssertTrue(hogeVC.isViewWillDisappearCalled)
XCTAssertTrue(hogeVC.isViewDidDisappearCalled)
}
결과
모두 Pass했습니다.
유닛 테스트를 작성할 때 활용하십시오.
참고
Work with View Controllers
htps : //로 ゔぇぺぺr. 아 ぇ. 코 m / ぃ b 등 ry / 혼텐 t / 레후 렌세 ぃ b 등 ry / 갓찐 gS 타 d / ゔ ぇw 콘 t 롯 rs. HTML )
[추기] loadViewIfNeeded()
htps : //로 ゔぇぺぺr. 아 ぇ. 코 m / 도쿠 멘 타치 온 / 우이 키 t / 우이 우에 w t t ro r / 1621446
beginAppearanceTransition(_:animated:)
htps : //로 ゔぇぺぺr. 아 ぇ. 코 m / 도쿠 멘 타치 온 / 우이 키 t / 우이 우에 w t t 로페 r / 1621387
endAppearanceTransition()
htps : //로 ゔぇぺぺr. 아 ぇ. 코 m / 도쿠 멘 타치 온 / 우이 키 t / 우이 우에 w t t 로페 r / 1621503
iOS: The One Weird Trick For Testing View Controllers in Swift
Testing in Swift
Reference
이 문제에 관하여([iOS, Swift] 단위 테스트 중에 언제든지 ViewDidLoad(), ViewWill(Did)Appear(), ViewWill(Did)Disappear()를 호출하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mii-chan/items/a9d8fd420d04b92a1c34
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
func test_ViewDidLoad_Called() {
// ViewDidLoad()を呼び出す
hogeVC.loadViewIfNeeded()
XCTAssertTrue(hogeVC.isViewDidLoadCalled)
}
ViewWillAppear()
는 UIViewController 에 beginAppearanceTransition(_:animated:) 이라는 인스턴스 메소드가 준비되어 있으며, 그 첫 번째 인수( _ isAppearing: Bool
)를 true
로 호출하여 호출할 수 있습니다. ViewDidAppear()
는, 그 인스턴스 메소드를 호출한 후에 endAppearanceTransition() 를 호출하는 것으로 호출할 수 있습니다. // ViewWillAppear()を呼び出す(第一引数をtrueにする)
hogeVC.beginAppearanceTransition(true, animated: false)
// ViewDidAppear()を呼び出す
hogeVC.endAppearanceTransition()
결과
이것도 Pass했습니다.
ViewWill(Did)Disappear()
ViewWillDisappear()
는 이전 beginAppearanceTransition(_:animated:)의 첫 번째 인수 ( _ isAppearing: Bool
)를 false
로 호출하여 호출 할 수 있습니다. ViewDidDisappear()
는 endAppearanceTransition()을 호출하여 호출 할 수 있습니다.
func test_ViewWillAndDidDisappear_Called() {
// ViewWillDisappear()を呼び出す(第一引数をfalseにする)
hogeVC.beginAppearanceTransition(false, animated: false)
// ViewDidDisappear()を呼び出す
hogeVC.endAppearanceTransition()
XCTAssertTrue(hogeVC.isViewWillDisappearCalled)
XCTAssertTrue(hogeVC.isViewDidDisappearCalled)
}
결과
모두 Pass했습니다.
유닛 테스트를 작성할 때 활용하십시오.
참고
Work with View Controllers
htps : //로 ゔぇぺぺr. 아 ぇ. 코 m / ぃ b 등 ry / 혼텐 t / 레후 렌세 ぃ b 등 ry / 갓찐 gS 타 d / ゔ ぇw 콘 t 롯 rs. HTML )
[추기] loadViewIfNeeded()
htps : //로 ゔぇぺぺr. 아 ぇ. 코 m / 도쿠 멘 타치 온 / 우이 키 t / 우이 우에 w t t ro r / 1621446
beginAppearanceTransition(_:animated:)
htps : //로 ゔぇぺぺr. 아 ぇ. 코 m / 도쿠 멘 타치 온 / 우이 키 t / 우이 우에 w t t 로페 r / 1621387
endAppearanceTransition()
htps : //로 ゔぇぺぺr. 아 ぇ. 코 m / 도쿠 멘 타치 온 / 우이 키 t / 우이 우에 w t t 로페 r / 1621503
iOS: The One Weird Trick For Testing View Controllers in Swift
Testing in Swift
Reference
이 문제에 관하여([iOS, Swift] 단위 테스트 중에 언제든지 ViewDidLoad(), ViewWill(Did)Appear(), ViewWill(Did)Disappear()를 호출하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mii-chan/items/a9d8fd420d04b92a1c34
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
func test_ViewWillAndDidDisappear_Called() {
// ViewWillDisappear()を呼び出す(第一引数をfalseにする)
hogeVC.beginAppearanceTransition(false, animated: false)
// ViewDidDisappear()を呼び出す
hogeVC.endAppearanceTransition()
XCTAssertTrue(hogeVC.isViewWillDisappearCalled)
XCTAssertTrue(hogeVC.isViewDidDisappearCalled)
}
Work with View Controllers
htps : //로 ゔぇぺぺr. 아 ぇ. 코 m / ぃ b 등 ry / 혼텐 t / 레후 렌세 ぃ b 등 ry / 갓찐 gS 타 d / ゔ ぇw 콘 t 롯 rs. HTML )
[추기] loadViewIfNeeded()
htps : //로 ゔぇぺぺr. 아 ぇ. 코 m / 도쿠 멘 타치 온 / 우이 키 t / 우이 우에 w t t ro r / 1621446
beginAppearanceTransition(_:animated:)
htps : //로 ゔぇぺぺr. 아 ぇ. 코 m / 도쿠 멘 타치 온 / 우이 키 t / 우이 우에 w t t 로페 r / 1621387
endAppearanceTransition()
htps : //로 ゔぇぺぺr. 아 ぇ. 코 m / 도쿠 멘 타치 온 / 우이 키 t / 우이 우에 w t t 로페 r / 1621503
iOS: The One Weird Trick For Testing View Controllers in Swift
Testing in Swift
Reference
이 문제에 관하여([iOS, Swift] 단위 테스트 중에 언제든지 ViewDidLoad(), ViewWill(Did)Appear(), ViewWill(Did)Disappear()를 호출하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mii-chan/items/a9d8fd420d04b92a1c34텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)