Swift 2.x、3.x、4.x、および5.xの更新
これでpublic
、テストするメソッドにを追加する必要がなくなりました。Swiftの新しいバージョンでは、@testable
キーワードを追加するだけで済みます。
PrimeNumberModelTests.swift
import XCTest
@testable import MyProject
class PrimeNumberModelTests: XCTestCase {
let testObject = PrimeNumberModel()
}
そして、あなたの内部メソッドは維持することができます Internal
PrimeNumberModel.swift
import Foundation
class PrimeNumberModel {
init() {
}
}
private
(およびfileprivate
)記号は、を使用しても使用できないことに注意してください@testable
。
Swift 1.x
Swiftには2つの関連する概念があります(Xcode 6ベータ6として)。
- Swiftクラスをインポートする必要はありませんが、外部モジュール(ターゲット)をインポートする必要があります
- Swift のデフォルトのアクセス制御レベルは
Internal access
上のテストは、別のターゲットにされていることを考えるとPrimeNumberModelTests.swift
、あなたがする必要がimport
あなたの場合は、テストしたいというクラスが含まれているターゲットターゲットが呼ばれるMyProject
追加する必要がありますimport MyProject
しますPrimeNumberModelTests
:
PrimeNumberModelTests.swift
import XCTest
import MyProject
class PrimeNumberModelTests: XCTestCase {
let testObject = PrimeNumberModel()
}
ただし、これはクラスをテストするのに十分ではありません。PrimeNumberModel
デフォルトのアクセス制御レベルはInternal Access
であるため、クラスはテストバンドルに表示されないので、クラスとテストするPublic Access
すべてのメソッドを作成する必要があります。
PrimeNumberModel.swift
import Foundation
public class PrimeNumberModel {
public init() {
}
}