【问题标题】:Test method that modifies private array with Swift and XCTest使用 Swift 和 XCTest 修改私有数组的测试方法
【发布时间】:2014-12-30 12:15:20
【问题描述】:

我正在尝试为我一直从事的项目编写测试,但我似乎不知道如何测试我的一些方法。因此,某些方法通过向数组添加或删除项目来修改私有属性(数组)。我该如何测试这些案例?

谢谢!

【问题讨论】:

    标签: ios swift xctest


    【解决方案1】:

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

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

    如果你的类继承自 NSObject 你应该在这里检查:http://saulmora.com/2015/01/15/unit-testing-in-swift-without-access-levels.html

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多