Как насчет открытия личных свойств и метод в качестве расширения и использование только что для тестирования. Удалите расширение (прокомментируйте это), когда не тестируете.
Здесь я помещаю 'T' перед частным методом или именем свойства в расширении.
Например:
class MyClass {
private var privateString: String?
private func privateSetName(name: String) {
privateString = name
}
extension MyClass { // for testing only
var TprivateString: String? {
get {
return self.privateString
}
}
func TprivateSetName(name: String) {
privateSetName(name)
}
}
то в вашем XCTest вы можете сделать:
func testThatNameIsSet() {
let myClass = MyClass()
myClass.TprivateSetName("myName")
XCTAsserNotNil(myClass.TprivateString, "Name should be set.")
}