티스토리 뷰

반응형

 

 


iOS 스위프트 문법
assert(_:_:file:line:)

swift의 문법 중 하나인 assert입니다. assert는 전통적으로 C 스타일의 assert문을 메세지와 함께 넣어서 사용할 수 있게 해줍니다. 


assert문은 특정 조건을 체크하고, 조건이 성립되지 않으면 메세지를 출력하게 할 수 있는데, 실제 배포된 앱 성능에는 영향을 끼치지 않는다는 특징이 있습니다.

이러한 특성을 갖기 때문에 assert문은 API 테스트 등, 조건 체크 및 테스트를 해야할 때 유용하게 사용될 수 있습니다.

iOS 개발 간 테스트코드 작성 시에 특정 조건 체크를 위해 사용되는 문법 중 assert와 유사한 메서드, XCTAssert 라는 기능도 존재합니다. 관심있으시다면 XCTAssert와 관련 된 내용도 찾아보시기 바랍니다.

 


assert 메서드 선언형태

assert의 선언형태입니다. assert 메서드는 총 4개의 인자를 받을 수 있습니다.
체크할 조건 문 / 조건 미충족 시 메세지 / 메세지 출력할 파일 / 출력할 메세지 라인 수 의 총 4개의 메서드가 존재합니다.

첫번째 인자인 조건문만 넣어서 체크할 수도 있습니다. 나머지 인자값은 디폴트 설정이 되어있기 때문입니다. 

 

 

 

1) 첫번째 인자인 condition입니다. 첫번째 인자로 assert 메서드는 해당 인자에 대한 조건을 체크하게 됩니다. 플레이 그라운드, -Onone 빌드 상에서만 평가되며, 실제 배포된 앱 성능에는 영향을 미치지 않습니다. 

2) message는 첫번째 인자인 condition이 false일 경우 출력되는 메세지를 설정합니다. 

 

 

3) 세번째 인자인 file은 assertion fails 이 일어날 경우 출력할 파일의 이름을 설정할 수 있습니다. 디폴트로는 assert() 메서드가 호출된 곳의 파일이 됩니다. 

4) 마지막 인자인 line입니다. assertion fails가 발생했을 때 출력할 메세지의 line 수를 설정합니다. 

 

 


assert, precondition 스위프트 문법 특징

앞서 살펴보았듯이, assert 메서드 스위프트 문법은 실제 앱 성능에는 영향을 끼치지 않으면서 내부 테스팅 과정에서 특정 조건이 성립되는지를 체크하고자 할 때 유용하게 사용할 수 있습니다. 

하지만 조건이 성립하는지 체크하고, 만약 조건이 성립하지 않으면, 실제 앱에도 영향을 미치고 싶을때가 있을 수 있겠죠? 이럴때 사용할 수 있는 문법으로는 assert 메서드대신 precondition(_:_:file:line:) 메서드가 있습니다. 

앱 실행 간 조건절 테스트가 적용되어야 할 범위에 따라, assert, precondition 등을 선택해서 테스팅과정에 활용할 수 있겠습니다. 

 

 


스위프트 문법, assert 메서드 사용하기

위의 코드는 실제 assert문을 사용하는 예시입니다. 위의 someMethod 메서드는 특정 Int 타입 값을 받아서 해당 값이 0인지를 체크하는 assert문을 실행합니다.

- 만약 해당 값, number가 0이 아니라면 "this is not a zero"를 출력하게 됩니다. 
- 만약 number가 0이라면 해당 행을 무사히 넘어가고 정상적으로 이후의 코드를 실행하게 됩니다. 

10행에서는 해당 메서드에 인자값 10을 넣어서 출력을 실행하고 있죠?

10은 0이 아니므로 assert 메서드의 assertion failed 메세지로 "this is not a zero" 가 출력이 될 것입니다. 그 결과는 아래와 같습니다. 

 

 

 

 

 

반응형
댓글
반응형
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함