【에러 대처】【유메미 iOS 연수】Swift Unit Test -> Could not cast value of type 'xxx' to 'xxxTests'

4568 단어 iOSSwift
유메미 주식회사 iOS 연수
시스템 엔지니어로서 일하고 있는 것 코드를 쓸 기회가 적기 때문에, 프라이빗으로 코드를 쓰는 습관을 익히고 싶다고 찾아낸 신인 육성용 커리큘럼.

세션8 에서의 테스트 코드 작성시에 이하의 에러로 망설였으므로 비망록으로서 기재합니다.

오류 로그


Could not cast value of type 'yumemi.ViewController' (0x108f463f8) to 'yumemiTests.ViewController'

테스트 코드에서 UIStoryboard(name: "Main", bundle: nil).instantiateInitialViewController()에서 ViewController를 생성하려고했지만 런타임에 오류가 발생합니다.
로그의 내용적으로 Target의 호출처가 관계하고 있는 것 같다.

버전




도구
버전


Xcode
12.4

Swift
5


테스트 코드



ViewControllerTests.swift
import XCTest
@testable import yumemi

class ViewControllerTests: XCTestCase {

    var viewController: ViewController!

    override func setUpWithError() throws {
        viewController = UIStoryboard(name: "Main", bundle: nil).instantiateInitialViewController()
        _ = viewController.view
    }

    override func tearDownWithError() throws {
        // Put teardown code here. This method is called after the invocation of each test method in the class.
    }

    func testExample() throws {
        // This is an example of a functional test case.
        // Use XCTAssert and related functions to verify your tests produce the correct results.
    }

    func testPerformanceExample() throws {
        // This is an example of a performance test case.
        self.measure {
            // Put the code you want to measure the time of here.
        }
    }
}

해결 방법



테스트 대상 ViewController를 참조하면 Target Membership에 Test Target(이번에는 yumemiTests)이 포함되어 있었으므로, 체크를 해제하면 에러는 해소되어 테스트 코드로부터 ViewController를 참조할 수 있게 되었다.


기타



해결한 것의 이유는 모르기 때문에, 아시는 분이 있으면 교수 받을 수 있으면 기쁩니다.
아직 깨끗하게 코드를 쓸 수 없지만 분투 중입니다.
yumemi 개인 연습용 리포지토리

좋은 웹페이지 즐겨찾기