Swift - Test类中的对象实例化

时间:2014-08-02 15:32:44

标签: unit-testing swift xctest objectinstantiation

我正在尝试测试我写的课程。我添加了一个新的测试目标,并在那里导入了我正在尝试测试的类的目标。我的代码如下所示:

import XCTest
import TargetContainingClass

class Tests: XCTestCase
{
   var myClass = MyClass()

   // tests

}

然而,我收到错误:

'MyClass' is not constructible with '()'

MyClass不包含init()方法,因此不需要构造任何内容。因此,我不明白我得到的错误。

非常感谢任何帮助。

干杯

2 个答案:

答案 0 :(得分:0)

您需要提供init()的实现方式:

class MyClass {
  init () {}
}

Swift文档指出:

“Swift provides a default initializer for any structure or base class that provides 
 default values for all of its properties and does not provide at least one initializer
 itself. The default initializer simply creates a new instance with all of 
 its properties set to their default values.”  
    Apple Inc. “The Swift Programming Language.”

但上述情况显然不正确;在行动:

  1> class MyClass1 {}
  2> MyClass1()
/var/folders/.../expr.DO8uJ4.swift:2:1: error: 'MyClass1' is not constructible with '()'
MyClass1()
^
  2> class MyClass { 
  3.     init () {} 
  4. }    
  5> MyClass()
$R0: __lldb_expr_3.MyClass = {}

答案 1 :(得分:0)

我首先解决了我的问题,提供了@GoZoner建议的init() {}实现,然后摆脱Apple Mach-O Linker (id) Error我必须添加我想要作为编译源测试的类构建阶段。