将类型函数添加到Swift单元测试目标

时间:2015-07-18 06:14:52

标签: ios swift cocoa-touch xctest

如何在Swift中对测试目标显示类型函数(在扩展中定义)?如果我的项目中有以下扩展名:

extension NSData {
    class func XOR(inputData: NSData, withKey key: NSData) -> NSData {            
        ...            
        return NSData(bytes: output.baseAddress, length: inputData.length)
    }
}

XOR函数对主项目可见,但不在测试目标中。我的测试文件中也有@testable import MyModule。 (另外,有趣的是,扩展中添加的变量对于测试目标是可见的。)

1 个答案:

答案 0 :(得分:1)

有三种方法(我记得)可以在测试目标中显示该功能。

  1. 将测试目标添加到包含扩展名的文件的目标成员资格。
  2. <LinearLayout android:id="@+id/llMain" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#f5f4f4" android:gravity="center_vertical" android:orientation="horizontal" android:paddingBottom="20dp" android:paddingLeft="15dp" android:paddingRight="15dp" android:paddingTop="20dp"> <ImageView android:id="@+id/ivOne" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_launcher" /> <TextView android:id="@+id/txtOne" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="20dp" android:text="Hiren" android:textAppearance="@android:style/TextAppearance.Medium" android:textColor="@android:color/black" /> <RelativeLayout android:id="@+id/rlRight" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="right"> <ImageView android:id="@+id/ivRight" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="5dp" android:src="@drawable/ic_launcher" /> </RelativeLayout> </LinearLayout> (通过省略访问修饰符隐式设置)的功能提升为internal
  3. 升级到Xcode 7 beta并使用Swift 2的新public属性导入您的模块。这样做会隐式地将@testable变量/方法/等推广到internal,以使其在测试目标中可见。
  4. public