ひとしれずひっそり

主にソフトに関することをメモしていきます。過程をそのまま書いていたりするので間違いが含まれます。鵜呑みしない様に。

XCTest で setup

テストクラスをNewするとsetUpWithError()が含まれている。

ここでメンバ変数を初期化して準備しようとするとエラーでコンパイルできない。

メインのプロジェクト(Test)でAというクラスを定義

import Foundation

class A {
    func foo() -> Int {
        return 0
    }
}

このテストでメンバ変数aを追加

import XCTest
@testable import Test

final class ATests: XCTestCase {

    private var a: A
    
    override func setUpWithError() throws {
        a = A()
    }

    override func tearDownWithError() throws {
    }

    func testFoo() throws {
        XCTAssertEqual(123, a.foo())
    }
}

コンパイルしようとすると以下のメッセージがでてコンパイルできない。

Class 'ATests' has no initializers

メンバ変数定義に!を追加するとコンパイルできる。
!はForced unwrappingというみたい。

final class ATests: XCTestCase {

    private var a: A!