Matchers that ship with Xcode's testing framework could be improved

Originator:ash
Number:rdar://34875723 Date Originated:8/10/2017
Status:Closed as dupe (27913646) Resolved:
Product:Developer Tools Product Version:
Classification: Reproducible:
 
Okay so: matchers. Matchers are how developers write assertions in unit tests. Currently the matchers that ship with Xcode are fairly limited. They're a simple function that performs an assert under the hood (I think).

XCTAssertEqual(objectA, objectB)

That's fine but it's not really expressive, and it doesn't take advantage of some really cool techniques used in other languages to unit test. For example, take Nimble. Nimble is a matcher library that can be used with XCTest that provides expressive and extensible matchers. It's open source, available here: https://github.com/Quick/Nimble

expect(objectA) == objectB

Honestly I'd like it if Xcode just _shipped_ with Nimble included, but I get that Apple can't necessarily do that. So instead, I'd suggest copying all the features and capabilities of Nimble. I'm a Nimble maintainer, and it would be awesome if Nimble were completely sherlocked in the next release of Xcode. Here are some other examples from Nimble's readme:

expect(1.2).to(beCloseTo(1.1, within: 0.1))
expect(3) > 2
expect("seahorse").to(contain("sea"))
expect(["Atlantic", "Pacific"]).toNot(contain("Mississippi"))

Looming forward to hearing back.

Comments


Please note: Reports posted here will not necessarily be seen by Apple. All problems should be submitted at bugreport.apple.com before they are posted here. Please only post information for Radars that you have filed yourself, and please do not include Apple confidential information in your posts. Thank you!