【发布时间】:2014-12-28 08:04:24
【问题描述】:
2016 年 3 月 23 日更新 我刚刚在下面测试了我的原始示例代码,它在 XCode 7.3 中都能正常编译。看起来 XCTAssertNil 一直在更新以采用 () throws -> Any? 类型的表达式,因此可能不再需要这个问题和答案(除了有一段时间使用旧版本的编译器。)
我正在使用 XCTest 在 XCode 中编写我的第一个单元测试。我不确定如何利用 XCTAssertNil 因为它似乎只在使用某些类型时才能编译。它似乎可以使用由类和内置原语制成的可选项,但不适用于结构。如何使用这种方法?
对于结构,编译器给出以下错误(假设“SimpleStruct”是您的类型的名称):
'SimpleStruct' is not identical to 'AnyObject'
这里有一个简单的测试类来说明一些可以编译的类型和其他不能编译的类型。
import Cocoa
import XCTest
struct SimpleStruct {
}
class SimpleClass {
}
class Tests: XCTestCase {
func testl() {
var simpleStruct:SimpleStruct? = nil;
var simpleClass:SimpleClass? = nil;
var i:Int? = nil;
var s:String? = nil;
var tuple:(Int,String)? = nil;
XCTAssertNil(simpleStruct); // compile error
XCTAssertNil(simpleClass); // OK
XCTAssertNil(i); // OK
XCTAssertNil(s); // OK
XCTAssertNil(tuple); // compile error
}
}
【问题讨论】: