티스토리 뷰

728x90
반응형

Unit test 라이브러리로 많이 쓰이는 Quick과 Nimble..! 

왜 유명한 것인지 Nimble부터 살펴보자 ☺️

 

[1] XCTAssert 와는 달리 매번 사용자 임의 실패 메시지를 지정할 필요가 없다 

 

XCTAssert에서 실패 메세지를 작성해주지 않으면,

XCTAssertTrue(contains(sillyMonkeys, kiki))

테스트가 실패했을 때  달랑 "XCTAssertTrue failed" 이라는 실패메세지를 받게 된다 

 

 

그래서 보통 이렇게 실패 메시지를 함께 작성한다

XCTAssertTrue(contains(sillyMonkeys, kiki), "Expected sillyMonkeys to contain 'Kiki'")

테스트가 실패했을 때 "Expected sillyMonkeys to contain 'Kiki'" 이라는 실패메세지를 보고 실패 원인을 빨리 알아내기 위해서이다

 

 

Nimble을 사용하면 이렇게 수동으로 실패 메세지를 작성해주지 않아도 된다..! (작성해보면 이것도 꽤 시간이 많이 드는 일임을, 실수할 수 도 있는 일임을 알게 된다) 그리고 Nimble은 더 읽기 쉬운 실패 메세지를 제공해준다 감동적..🥺

 

Nimble을 설치하고 Nimble의 XCTAssert인 expect를 써보자 

expect(sillyMonkeys).to(contain(kiki))

테스트가 실패했을 때, 

"expected to contain <Monkey(name: Kiki, sillines: ExtremelySilly)>, got <[Monkey(name: Jane, silliness: VerySilly)]>"

이라는 메세지를 받게 된다

 

 

 

물론 원한다면, 이렇게 custom 에러 메세지도 쓸 수 있다..! 

테스트에 실패하면 Nimble이 만들어준 에러메세지와 내가 정의한 커스텀 에러 메세지가 같이 나온다..! 

[2]  다양한 assertion을 제공한다 

 

async한 테스트는 toEventually 또는 toEventuallyNot을 사용한다

 

timeout이라는 파라미터를 설정해줌으로써 테스트하고자 하는 값이 update되는 것을 기다려줄 수 도 있다

pollInterval이라는 재밌는(?) 파라미터도 있는데, 밑의 예시를 보고 이해할 수 있다

// Evaluate someValue every 0.2 seconds repeatedly until it equals 100, or fails if it timeouts after 5.5 seconds.)
👉 사진에 짤려서리..

 

 

 

Types/Classes도 테스트해볼 수 있게 해뒀고 

 

nil인지 여부와 true/false 여부를 함께 테스트해볼 수 있는 친구들도 정의해뒀다 

 

그 외에도 정말 많다 https://github.com/Quick/Nimble 👈 여기서 보실 수 있습니당..! 

 

 

 

 

Reference

https://github.com/Quick/Quick/blob/master/Documentation/ko-kr/NimbleAssertions.md

 

Quick/Quick

The Swift (and Objective-C) testing framework. Contribute to Quick/Quick development by creating an account on GitHub.

github.com

https://github.com/Quick/Nimble

 

Quick/Nimble

A Matcher Framework for Swift and Objective-C. Contribute to Quick/Nimble development by creating an account on GitHub.

github.com

반응형
댓글