使用Swift和XCTest修改私有数组的测试方法

时间:2014-12-30 12:15:20

标签: ios swift xctest

我正在尝试为我正在进行的项目编写测试,而我似乎无法弄清楚如何测试我的一些方法。因此,某些方法通过向数组添加或删除项来修改私有属性(Array)。我该如何测试这个案例?

谢谢!

2 个答案:

答案 0 :(得分:1)

基本上你问的是如何测试私有财产。

注意:此方法仅适用于框架目标

如果您的班级继承自NSObject,您应该在此处查看:http://saulmora.com/2015/01/15/unit-testing-in-swift-without-access-levels.html

答案 1 :(得分:1)

如何在扩展中打开您的私有属性和方法,并仅将其用于测试。不测试时删除扩展名(注释掉)。

这里我在扩展名中的私有方法或属性名称前加上了'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.") 
}