什么是XCTAssertEqualObjects的替代品?

不确定何时,但至less在Xcode 7.2中, XCTAssertEqualObjects不再可用。

有没有替代这个,而不必诉诸?

  XCTAssertTrue(foo == bar) 

请注意,苹果公司的“编写testing类和方法”已经过时了,仍然是指缺less的类。

对于Swift,你可以使用XCTAssertEqual

你的对象需要实现Equatable协议,所以macros可以使用==


例:

 import XCTest class A: Equatable { let name: String init(name: String) { self.name = name } } func ==(lhs: A, rhs: A) -> Bool { return lhs.name == rhs.name } class FooTests: XCTestCase { func testFoo() { let a = A(name: "foo") let a1 = A(name: "foo") let b = A(name: "bar") XCTAssertEqual(a, a) XCTAssertEqual(a, a1) XCTAssertEqual(a, b) // will fail } } 

我会更具体一点你正在testing。

平等和身份是不一样的,特别是在价值更丰富的Swift中。

如果要testing符合Equatable平等,则使用:

 XCTAssertTrue(a == b) 

如果你想testing两个引用types是相等的:

 XCTAssertTrue(a === b) 

我觉得这样比较好,因为这个说法更明确。 是相同还是相同的对象。

请记住关于Swift中值types的WWDC15会议 – build议您始终使您的值types符合Equatable