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() {
}
}