[Swift] Setに対してAssertEqualするときはsubstractingを使うとログが見やすい
3612 ワード
二つのSet
が等しいかをテストしたい場合、素直にはXCTAssertEqual(setx, sety)
とやればいいのですが、この方法だと等しくなかった場合に非常にログが見づらくなります。特にSet
は順序が固定でないため、どこが違うのか全くわからないことも多いです。
そこで、setx
からsety
の元を除いたもの、sety
からsetx
の元を除いたものが、それぞれ空集合であるかを調べると、ログが見やすくなります。
func testSets() throws {
let setx = Set([0, 1, 2, 3, 4, 5])
let sety = Set([0, 1, 2, 4, 5, 6])
// これだとログが見づらい
XCTAssertEqual(setx, sety) // XCTAssertEqual failed: ("[3, 4, 0, 1, 5, 2]") is not equal to ("[4, 6, 2, 5, 0, 1]")
// こうすると違いが分かり易い!
XCTAssertEqual(setx.subtracting(sety), []) // XCTAssertEqual failed: ("[3]") is not equal to ("[]")
XCTAssertEqual(sety.subtracting(setx), []) // XCTAssertEqual failed: ("[6]") is not equal to ("[]")
}
Author And Source
この問題について([Swift] Setに対してAssertEqualするときはsubstractingを使うとログが見やすい), 我々は、より多くの情報をここで見つけました https://zenn.dev/en3_hcl/articles/a5908f7a764f00著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Collection and Share based on the CC protocol