【问题标题】:Xcode: XCTest cannot no compare two NSArray of numbers [duplicate]Xcode:XCTest不能比较两个NSArray的数字[重复]
【发布时间】:2020-11-11 05:47:20
【问题描述】:

我正在尝试实现一个单元测试(XCTest)来比较两个 NSArray 对象:

这是我的实现:

- (void)testTwoNumsArrays {
    NSArray *result = @[@20,@20];
    NSArray *expecteResult = @[@20,@20];
    
    XCTAssertEqual(result, expecteResult);
}

我收到此错误:

((result) equal to (expecteResult)) failed: ("{length = 8, bytes = 0xb0cfc00001000000}") is not equal to ("{length = 8, bytes = 0x9032ce0001000000}")

你们中的任何人都知道为什么我不能比较这两个数组。在 Swift 中它工作得很好。

非常感谢您的帮助。

【问题讨论】:

    标签: ios objective-c iphone nsarray xcode11.2.1


    【解决方案1】:

    问题是您正在比较指向对象的指针而不是对象本身。

    XCTAssertEqual 本质上是在做如下检查,它只是比较指针值。

    if (a != b) assert();
    

    你想要更多的东西

    if (![a isEqual:b]) assert();
    

    这可以通过调用 XCTAssertEqualObjects 来实现。

    更多信息:

    XCTAssertEqual fails to compare two string values?

    https://developer.apple.com/documentation/xctest/xctassertequalobjects

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-02
      • 2016-01-16
      • 1970-01-01
      相关资源
      最近更新 更多