이번에는 Assert에 대해서 확인을 해보도록 하자.
Assert
- 특정 조건을 체크하고, 조건이 성립되지 않으면 메시지를 출력하게 할 수 있는 함수
- assert 함수는 디버깅 모드에서만 작동하며, 주로 디버깅 중 검증을 위하여 사용한다.
- 약간 Oracle 프로시저에서 exception 을 주는 그런 기능으로 이해하면 편할 것 같다.
해당 내용에 대해서 우선 PlayGround 로 간단히 확인을 해보도록 하자.
가장 간단하게 assert 예제에 대해서 확인을 진행해 보았다.
우선적으로 number 변수에 1을 대입하였고, 첫 assert 에서는 에러가 표기되지 않았다.
number가 1이기 때문이다. 따라서 number를 2로 바꾸었고, 이후에 assert 를 동일하게 표현하되, 뒤에 에러 문구를 추가를 하였다.
에러문구는 "값이 1이 아님" 해당 문구를 추가하였고, 그러자 에러가 발생한 내용을 확인할 수 있다.
에러의 내용은 Assertion Failed : 추가한 문구 이렇게 표기가 된다.
특정 조건들에 대해서 추가적인 검증이 필요한 내용이 있을 경우에는 이렇게 사용하면 쉽게 해결할 수 있다.
값의 비교를 위하여 assert에 비교 함수의 내용을 대입할 수 있다. 추가적인 테스트를 한번 더 진행해보도록 하자.
하나의 함수를 만들어서 함수 안의 if문에 예외처리를 진행했다.
따라서 함수에서 받는 변수가 -1 로 인하여 이번에도 Assertion 에러가 발생했다.
Assert 문은 API 테스트 등 조건 체크 및 각종 추가 테스트들을 할 때에 유용하게 사용할 수 있는데 실제로 해당 내용을 작성하고, 앱을 배포할 경우에는 배포된 앱의 성능에는 크게 영향을 미치지 않는다.
그럼 이제 Assert 와 비슷한 Preconditions에 대해서 추가적으로 확인을 해보도록 하자.
기존의 assert 문을 사용했던 부분에 precondition을 사용하였다.
위에서 언급했다 싶이 precondition 또한 assert와 비슷하다고 했음으로 인하여 assert와 동일한 부분에서 에러가 발생했다.
그럼이제 한가지 의문점이 든다.
그럼 왜 동일한 기능의 내용이 하나가 더 있을까?
assert에 대한 에러 내용은 디버깅 상에서만 체크가 된다.
하지만 precondition은 디버깅과 프로젝트 빌드 모두 체크가 된다.
정리를 하자면, 프로젝트 빌드 후 앱 배포시에 assert는 영향이 있지 않다. 따라서 앱의 성능에 크게 영향을 끼치지 않는 부분인 내용인것이고, precondition은 프로젝트 빌드 후에도 체크가 됨으로 인하여 앱의 성능에 영향을 끼치는 부분이다.
즉, 앱의 배포 내용에 영향이 있음으로 precondition 을 사용한 내용에서 에러가 발생하면, 실제로 사용자가 앱을 사용할 때에 앱이 바로 종료가 되어버린다.
따라서 assert는 개발 과정 중에서 테스트에서 상당히 많이 쓰인다.
'APPLE > Swift 문법' 카테고리의 다른 글
[ 기초 문법 ] Protocol (0) | 2022.08.19 |
---|---|
[ 기초 문법 ] guard (0) | 2022.08.19 |
[ 기초 문법 ] 타입 캐스팅 (0) | 2022.08.16 |
[ 기초 문법 ] 상속 (0) | 2022.08.14 |
[ 기초 문법 ] 프로퍼티 (0) | 2022.08.11 |